YES 11.662 H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/FiniteMap.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:



HASKELL
  ↳ LR

mainModule FiniteMap
  ((delFromFM :: (Ord a, Ord b) => FiniteMap (b,a) c  ->  (b,a ->  FiniteMap (b,a) c) :: (Ord b, Ord a) => FiniteMap (b,a) c  ->  (b,a ->  FiniteMap (b,a) c)

module FiniteMap where
  import qualified Maybe
import qualified Prelude

  data FiniteMap b a = EmptyFM  | Branch b a Int (FiniteMap b a) (FiniteMap b a


  instance (Eq a, Eq b) => Eq (FiniteMap b a) where 
   
(==) fm_1 fm_2 sizeFM fm_1 == sizeFM fm_2 && fmToList fm_1 == fmToList fm_2

  delFromFM :: Ord a => FiniteMap a b  ->  a  ->  FiniteMap a b
delFromFM EmptyFM del_key emptyFM
delFromFM (Branch key elt size fm_l fm_rdel_key 
 | del_key > key = 
mkBalBranch key elt fm_l (delFromFM fm_r del_key)
 | del_key < key = 
mkBalBranch key elt (delFromFM fm_l del_key) fm_r
 | key == del_key = 
glueBal fm_l fm_r

  deleteMax :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMax (Branch key elt _ fm_l EmptyFMfm_l
deleteMax (Branch key elt _ fm_l fm_rmkBalBranch key elt fm_l (deleteMax fm_r)

  deleteMin :: Ord b => FiniteMap b a  ->  FiniteMap b a
deleteMin (Branch key elt _ EmptyFM fm_rfm_r
deleteMin (Branch key elt _ fm_l fm_rmkBalBranch key elt (deleteMin fm_l) fm_r

  emptyFM :: FiniteMap b a
emptyFM EmptyFM

  findMax :: FiniteMap b a  ->  (b,a)
findMax (Branch key elt _ _ EmptyFM(key,elt)
findMax (Branch key elt _ _ fm_rfindMax fm_r

  findMin :: FiniteMap a b  ->  (a,b)
findMin (Branch key elt _ EmptyFM _) (key,elt)
findMin (Branch key elt _ fm_l _) findMin fm_l

  fmToList :: FiniteMap a b  ->  [(a,b)]
fmToList fm foldFM (\key elt rest ->(key,elt: rest) [] fm

  foldFM :: (b  ->  a  ->  c  ->  c ->  c  ->  FiniteMap b a  ->  c
foldFM k z EmptyFM z
foldFM k z (Branch key elt _ fm_l fm_rfoldFM k (k key elt (foldFM k z fm_r)) fm_l

  glueBal :: Ord a => FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
glueBal EmptyFM fm2 fm2
glueBal fm1 EmptyFM fm1
glueBal fm1 fm2 
 | sizeFM fm2 > sizeFM fm1 = 
mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
 | otherwise = 
mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where 
mid_elt1 (\(_,mid_elt1) ->mid_elt1) vv2
mid_elt2 (\(_,mid_elt2) ->mid_elt2) vv3
mid_key1 (\(mid_key1,_) ->mid_key1) vv2
mid_key2 (\(mid_key2,_) ->mid_key2) vv3
vv2 findMax fm1
vv3 findMin fm2

  mkBalBranch :: Ord b => b  ->  a  ->  FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
mkBalBranch key elt fm_L fm_R 
 | size_l + size_r < 2 = 
mkBranch 1 key elt fm_L fm_R
 | size_r > sIZE_RATIO * size_l = 
case fm_R of
  Branch _ _ _ fm_rl fm_rr
 | sizeFM fm_rl < 2 * sizeFM fm_rr -> 
single_L fm_L fm_R
 | otherwise -> 
double_L fm_L fm_R
 | size_l > sIZE_RATIO * size_r = 
case fm_L of
  Branch _ _ _ fm_ll fm_lr
 | sizeFM fm_lr < 2 * sizeFM fm_ll -> 
single_R fm_L fm_R
 | otherwise -> 
double_R fm_L fm_R
 | otherwise = 
mkBranch 2 key elt fm_L fm_R where 
double_L fm_l (Branch key_r elt_r _ (Branch key_rl elt_rl _ fm_rll fm_rlr) fm_rrmkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l _ fm_ll (Branch key_lr elt_lr _ fm_lrl fm_lrr)) fm_r mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
single_L fm_l (Branch key_r elt_r _ fm_rl fm_rrmkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr
single_R (Branch key_l elt_l _ fm_ll fm_lrfm_r mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l sizeFM fm_L
size_r sizeFM fm_R

  mkBranch :: Ord a => Int  ->  a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBranch which key elt fm_l fm_r 
let 
result Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
in result
 where 
balance_ok True
left_ok 
case fm_l of
  EmptyFM-> True
  Branch left_key _ _ _ _-> 
let 
biggest_left_key fst (findMax fm_l)
in biggest_left_key < key
left_size sizeFM fm_l
right_ok 
case fm_r of
  EmptyFM-> True
  Branch right_key _ _ _ _-> 
let 
smallest_right_key fst (findMin fm_r)
in key < smallest_right_key
right_size sizeFM fm_r
unbox :: Int  ->  Int
unbox x x

  sIZE_RATIO :: Int
sIZE_RATIO 5

  sizeFM :: FiniteMap b a  ->  Int
sizeFM EmptyFM 0
sizeFM (Branch _ _ size _ _) size


module Maybe where
  import qualified FiniteMap
import qualified Prelude



Lambda Reductions:
The following Lambda expression
\(mid_key1,_)→mid_key1

is transformed to
mid_key10 (mid_key1,_) = mid_key1

The following Lambda expression
\(_,mid_elt1)→mid_elt1

is transformed to
mid_elt10 (_,mid_elt1) = mid_elt1

The following Lambda expression
\(mid_key2,_)→mid_key2

is transformed to
mid_key20 (mid_key2,_) = mid_key2

The following Lambda expression
\(_,mid_elt2)→mid_elt2

is transformed to
mid_elt20 (_,mid_elt2) = mid_elt2

The following Lambda expression
\keyeltrest→(key,elt: rest

is transformed to
fmToList0 key elt rest = (key,elt: rest



↳ HASKELL
  ↳ LR
HASKELL
      ↳ CR

mainModule FiniteMap
  ((delFromFM :: (Ord b, Ord a) => FiniteMap (a,b) c  ->  (a,b ->  FiniteMap (a,b) c) :: (Ord b, Ord a) => FiniteMap (a,b) c  ->  (a,b ->  FiniteMap (a,b) c)

module FiniteMap where
  import qualified Maybe
import qualified Prelude

  data FiniteMap a b = EmptyFM  | Branch a b Int (FiniteMap a b) (FiniteMap a b


  instance (Eq a, Eq b) => Eq (FiniteMap a b) where 
   
(==) fm_1 fm_2 sizeFM fm_1 == sizeFM fm_2 && fmToList fm_1 == fmToList fm_2

  delFromFM :: Ord b => FiniteMap b a  ->  b  ->  FiniteMap b a
delFromFM EmptyFM del_key emptyFM
delFromFM (Branch key elt size fm_l fm_rdel_key 
 | del_key > key = 
mkBalBranch key elt fm_l (delFromFM fm_r del_key)
 | del_key < key = 
mkBalBranch key elt (delFromFM fm_l del_key) fm_r
 | key == del_key = 
glueBal fm_l fm_r

  deleteMax :: Ord b => FiniteMap b a  ->  FiniteMap b a
deleteMax (Branch key elt _ fm_l EmptyFMfm_l
deleteMax (Branch key elt _ fm_l fm_rmkBalBranch key elt fm_l (deleteMax fm_r)

  deleteMin :: Ord b => FiniteMap b a  ->  FiniteMap b a
deleteMin (Branch key elt _ EmptyFM fm_rfm_r
deleteMin (Branch key elt _ fm_l fm_rmkBalBranch key elt (deleteMin fm_l) fm_r

  emptyFM :: FiniteMap a b
emptyFM EmptyFM

  findMax :: FiniteMap b a  ->  (b,a)
findMax (Branch key elt _ _ EmptyFM(key,elt)
findMax (Branch key elt _ _ fm_rfindMax fm_r

  findMin :: FiniteMap a b  ->  (a,b)
findMin (Branch key elt _ EmptyFM _) (key,elt)
findMin (Branch key elt _ fm_l _) findMin fm_l

  fmToList :: FiniteMap a b  ->  [(a,b)]
fmToList fm foldFM fmToList0 [] fm

  
fmToList0 key elt rest (key,elt: rest

  foldFM :: (b  ->  c  ->  a  ->  a ->  a  ->  FiniteMap b c  ->  a
foldFM k z EmptyFM z
foldFM k z (Branch key elt _ fm_l fm_rfoldFM k (k key elt (foldFM k z fm_r)) fm_l

  glueBal :: Ord a => FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
glueBal EmptyFM fm2 fm2
glueBal fm1 EmptyFM fm1
glueBal fm1 fm2 
 | sizeFM fm2 > sizeFM fm1 = 
mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
 | otherwise = 
mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where 
mid_elt1 mid_elt10 vv2
mid_elt10 (_,mid_elt1mid_elt1
mid_elt2 mid_elt20 vv3
mid_elt20 (_,mid_elt2mid_elt2
mid_key1 mid_key10 vv2
mid_key10 (mid_key1,_) mid_key1
mid_key2 mid_key20 vv3
mid_key20 (mid_key2,_) mid_key2
vv2 findMax fm1
vv3 findMin fm2

  mkBalBranch :: Ord a => a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBalBranch key elt fm_L fm_R 
 | size_l + size_r < 2 = 
mkBranch 1 key elt fm_L fm_R
 | size_r > sIZE_RATIO * size_l = 
case fm_R of
  Branch _ _ _ fm_rl fm_rr
 | sizeFM fm_rl < 2 * sizeFM fm_rr -> 
single_L fm_L fm_R
 | otherwise -> 
double_L fm_L fm_R
 | size_l > sIZE_RATIO * size_r = 
case fm_L of
  Branch _ _ _ fm_ll fm_lr
 | sizeFM fm_lr < 2 * sizeFM fm_ll -> 
single_R fm_L fm_R
 | otherwise -> 
double_R fm_L fm_R
 | otherwise = 
mkBranch 2 key elt fm_L fm_R where 
double_L fm_l (Branch key_r elt_r _ (Branch key_rl elt_rl _ fm_rll fm_rlr) fm_rrmkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l _ fm_ll (Branch key_lr elt_lr _ fm_lrl fm_lrr)) fm_r mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
single_L fm_l (Branch key_r elt_r _ fm_rl fm_rrmkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr
single_R (Branch key_l elt_l _ fm_ll fm_lrfm_r mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l sizeFM fm_L
size_r sizeFM fm_R

  mkBranch :: Ord b => Int  ->  b  ->  a  ->  FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
mkBranch which key elt fm_l fm_r 
let 
result Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
in result
 where 
balance_ok True
left_ok 
case fm_l of
  EmptyFM-> True
  Branch left_key _ _ _ _-> 
let 
biggest_left_key fst (findMax fm_l)
in biggest_left_key < key
left_size sizeFM fm_l
right_ok 
case fm_r of
  EmptyFM-> True
  Branch right_key _ _ _ _-> 
let 
smallest_right_key fst (findMin fm_r)
in key < smallest_right_key
right_size sizeFM fm_r
unbox :: Int  ->  Int
unbox x x

  sIZE_RATIO :: Int
sIZE_RATIO 5

  sizeFM :: FiniteMap b a  ->  Int
sizeFM EmptyFM 0
sizeFM (Branch _ _ size _ _) size


module Maybe where
  import qualified FiniteMap
import qualified Prelude



Case Reductions:
The following Case expression
case fm_l of
 EmptyFM → True
 Branch left_key _ _ _ _ → 
let 
biggest_left_key  = fst (findMax fm_l)
in biggest_left_key < key

is transformed to
left_ok0 fm_l key EmptyFM = True
left_ok0 fm_l key (Branch left_key _ _ _ _) = 
let 
biggest_left_key  = fst (findMax fm_l)
in biggest_left_key < key

The following Case expression
case fm_r of
 EmptyFM → True
 Branch right_key _ _ _ _ → 
let 
smallest_right_key  = fst (findMin fm_r)
in key < smallest_right_key

is transformed to
right_ok0 fm_r key EmptyFM = True
right_ok0 fm_r key (Branch right_key _ _ _ _) = 
let 
smallest_right_key  = fst (findMin fm_r)
in key < smallest_right_key

The following Case expression
case fm_R of
 Branch _ _ _ fm_rl fm_rr
 | sizeFM fm_rl < 2 * sizeFM fm_rr
 → single_L fm_L fm_R
 | otherwise
 → double_L fm_L fm_R

is transformed to
mkBalBranch0 fm_L fm_R (Branch _ _ _ fm_rl fm_rr)
 | sizeFM fm_rl < 2 * sizeFM fm_rr
 = single_L fm_L fm_R
 | otherwise
 = double_L fm_L fm_R

The following Case expression
case fm_L of
 Branch _ _ _ fm_ll fm_lr
 | sizeFM fm_lr < 2 * sizeFM fm_ll
 → single_R fm_L fm_R
 | otherwise
 → double_R fm_L fm_R

is transformed to
mkBalBranch1 fm_L fm_R (Branch _ _ _ fm_ll fm_lr)
 | sizeFM fm_lr < 2 * sizeFM fm_ll
 = single_R fm_L fm_R
 | otherwise
 = double_R fm_L fm_R

The following Case expression
case compare x y of
 EQ → o
 LT → LT
 GT → GT

is transformed to
primCompAux0 o EQ = o
primCompAux0 o LT = LT
primCompAux0 o GT = GT



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
HASKELL
          ↳ IFR

mainModule FiniteMap
  ((delFromFM :: (Ord c, Ord a) => FiniteMap (c,a) b  ->  (c,a ->  FiniteMap (c,a) b) :: (Ord c, Ord a) => FiniteMap (c,a) b  ->  (c,a ->  FiniteMap (c,a) b)

module FiniteMap where
  import qualified Maybe
import qualified Prelude

  data FiniteMap a b = EmptyFM  | Branch a b Int (FiniteMap a b) (FiniteMap a b


  instance (Eq a, Eq b) => Eq (FiniteMap b a) where 
   
(==) fm_1 fm_2 sizeFM fm_1 == sizeFM fm_2 && fmToList fm_1 == fmToList fm_2

  delFromFM :: Ord a => FiniteMap a b  ->  a  ->  FiniteMap a b
delFromFM EmptyFM del_key emptyFM
delFromFM (Branch key elt size fm_l fm_rdel_key 
 | del_key > key = 
mkBalBranch key elt fm_l (delFromFM fm_r del_key)
 | del_key < key = 
mkBalBranch key elt (delFromFM fm_l del_key) fm_r
 | key == del_key = 
glueBal fm_l fm_r

  deleteMax :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMax (Branch key elt _ fm_l EmptyFMfm_l
deleteMax (Branch key elt _ fm_l fm_rmkBalBranch key elt fm_l (deleteMax fm_r)

  deleteMin :: Ord b => FiniteMap b a  ->  FiniteMap b a
deleteMin (Branch key elt _ EmptyFM fm_rfm_r
deleteMin (Branch key elt _ fm_l fm_rmkBalBranch key elt (deleteMin fm_l) fm_r

  emptyFM :: FiniteMap b a
emptyFM EmptyFM

  findMax :: FiniteMap a b  ->  (a,b)
findMax (Branch key elt _ _ EmptyFM(key,elt)
findMax (Branch key elt _ _ fm_rfindMax fm_r

  findMin :: FiniteMap a b  ->  (a,b)
findMin (Branch key elt _ EmptyFM _) (key,elt)
findMin (Branch key elt _ fm_l _) findMin fm_l

  fmToList :: FiniteMap b a  ->  [(b,a)]
fmToList fm foldFM fmToList0 [] fm

  
fmToList0 key elt rest (key,elt: rest

  foldFM :: (a  ->  b  ->  c  ->  c ->  c  ->  FiniteMap a b  ->  c
foldFM k z EmptyFM z
foldFM k z (Branch key elt _ fm_l fm_rfoldFM k (k key elt (foldFM k z fm_r)) fm_l

  glueBal :: Ord b => FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
glueBal EmptyFM fm2 fm2
glueBal fm1 EmptyFM fm1
glueBal fm1 fm2 
 | sizeFM fm2 > sizeFM fm1 = 
mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
 | otherwise = 
mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where 
mid_elt1 mid_elt10 vv2
mid_elt10 (_,mid_elt1mid_elt1
mid_elt2 mid_elt20 vv3
mid_elt20 (_,mid_elt2mid_elt2
mid_key1 mid_key10 vv2
mid_key10 (mid_key1,_) mid_key1
mid_key2 mid_key20 vv3
mid_key20 (mid_key2,_) mid_key2
vv2 findMax fm1
vv3 findMin fm2

  mkBalBranch :: Ord a => a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBalBranch key elt fm_L fm_R 
 | size_l + size_r < 2 = 
mkBranch 1 key elt fm_L fm_R
 | size_r > sIZE_RATIO * size_l = 
mkBalBranch0 fm_L fm_R fm_R
 | size_l > sIZE_RATIO * size_r = 
mkBalBranch1 fm_L fm_R fm_L
 | otherwise = 
mkBranch 2 key elt fm_L fm_R where 
double_L fm_l (Branch key_r elt_r _ (Branch key_rl elt_rl _ fm_rll fm_rlr) fm_rrmkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l _ fm_ll (Branch key_lr elt_lr _ fm_lrl fm_lrr)) fm_r mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
mkBalBranch0 fm_L fm_R (Branch _ _ _ fm_rl fm_rr
 | sizeFM fm_rl < 2 * sizeFM fm_rr = 
single_L fm_L fm_R
 | otherwise = 
double_L fm_L fm_R
mkBalBranch1 fm_L fm_R (Branch _ _ _ fm_ll fm_lr
 | sizeFM fm_lr < 2 * sizeFM fm_ll = 
single_R fm_L fm_R
 | otherwise = 
double_R fm_L fm_R
single_L fm_l (Branch key_r elt_r _ fm_rl fm_rrmkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr
single_R (Branch key_l elt_l _ fm_ll fm_lrfm_r mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l sizeFM fm_L
size_r sizeFM fm_R

  mkBranch :: Ord a => Int  ->  a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBranch which key elt fm_l fm_r 
let 
result Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
in result
 where 
balance_ok True
left_ok left_ok0 fm_l key fm_l
left_ok0 fm_l key EmptyFM True
left_ok0 fm_l key (Branch left_key _ _ _ _) 
let 
biggest_left_key fst (findMax fm_l)
in biggest_left_key < key
left_size sizeFM fm_l
right_ok right_ok0 fm_r key fm_r
right_ok0 fm_r key EmptyFM True
right_ok0 fm_r key (Branch right_key _ _ _ _) 
let 
smallest_right_key fst (findMin fm_r)
in key < smallest_right_key
right_size sizeFM fm_r
unbox :: Int  ->  Int
unbox x x

  sIZE_RATIO :: Int
sIZE_RATIO 5

  sizeFM :: FiniteMap a b  ->  Int
sizeFM EmptyFM 0
sizeFM (Branch _ _ size _ _) size


module Maybe where
  import qualified FiniteMap
import qualified Prelude



If Reductions:
The following If expression
if primGEqNatS x y then Succ (primDivNatS (primMinusNatS x y) (Succ y)) else Zero

is transformed to
primDivNatS0 x y True = Succ (primDivNatS (primMinusNatS x y) (Succ y))
primDivNatS0 x y False = Zero

The following If expression
if primGEqNatS x y then primModNatS (primMinusNatS x y) (Succ y) else Succ x

is transformed to
primModNatS0 x y True = primModNatS (primMinusNatS x y) (Succ y)
primModNatS0 x y False = Succ x



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
HASKELL
              ↳ BR

mainModule FiniteMap
  ((delFromFM :: (Ord a, Ord b) => FiniteMap (b,a) c  ->  (b,a ->  FiniteMap (b,a) c) :: (Ord b, Ord a) => FiniteMap (b,a) c  ->  (b,a ->  FiniteMap (b,a) c)

module FiniteMap where
  import qualified Maybe
import qualified Prelude

  data FiniteMap a b = EmptyFM  | Branch a b Int (FiniteMap a b) (FiniteMap a b


  instance (Eq a, Eq b) => Eq (FiniteMap b a) where 
   
(==) fm_1 fm_2 sizeFM fm_1 == sizeFM fm_2 && fmToList fm_1 == fmToList fm_2

  delFromFM :: Ord b => FiniteMap b a  ->  b  ->  FiniteMap b a
delFromFM EmptyFM del_key emptyFM
delFromFM (Branch key elt size fm_l fm_rdel_key 
 | del_key > key = 
mkBalBranch key elt fm_l (delFromFM fm_r del_key)
 | del_key < key = 
mkBalBranch key elt (delFromFM fm_l del_key) fm_r
 | key == del_key = 
glueBal fm_l fm_r

  deleteMax :: Ord b => FiniteMap b a  ->  FiniteMap b a
deleteMax (Branch key elt _ fm_l EmptyFMfm_l
deleteMax (Branch key elt _ fm_l fm_rmkBalBranch key elt fm_l (deleteMax fm_r)

  deleteMin :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMin (Branch key elt _ EmptyFM fm_rfm_r
deleteMin (Branch key elt _ fm_l fm_rmkBalBranch key elt (deleteMin fm_l) fm_r

  emptyFM :: FiniteMap a b
emptyFM EmptyFM

  findMax :: FiniteMap a b  ->  (a,b)
findMax (Branch key elt _ _ EmptyFM(key,elt)
findMax (Branch key elt _ _ fm_rfindMax fm_r

  findMin :: FiniteMap b a  ->  (b,a)
findMin (Branch key elt _ EmptyFM _) (key,elt)
findMin (Branch key elt _ fm_l _) findMin fm_l

  fmToList :: FiniteMap b a  ->  [(b,a)]
fmToList fm foldFM fmToList0 [] fm

  
fmToList0 key elt rest (key,elt: rest

  foldFM :: (b  ->  c  ->  a  ->  a ->  a  ->  FiniteMap b c  ->  a
foldFM k z EmptyFM z
foldFM k z (Branch key elt _ fm_l fm_rfoldFM k (k key elt (foldFM k z fm_r)) fm_l

  glueBal :: Ord b => FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
glueBal EmptyFM fm2 fm2
glueBal fm1 EmptyFM fm1
glueBal fm1 fm2 
 | sizeFM fm2 > sizeFM fm1 = 
mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
 | otherwise = 
mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where 
mid_elt1 mid_elt10 vv2
mid_elt10 (_,mid_elt1mid_elt1
mid_elt2 mid_elt20 vv3
mid_elt20 (_,mid_elt2mid_elt2
mid_key1 mid_key10 vv2
mid_key10 (mid_key1,_) mid_key1
mid_key2 mid_key20 vv3
mid_key20 (mid_key2,_) mid_key2
vv2 findMax fm1
vv3 findMin fm2

  mkBalBranch :: Ord b => b  ->  a  ->  FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
mkBalBranch key elt fm_L fm_R 
 | size_l + size_r < 2 = 
mkBranch 1 key elt fm_L fm_R
 | size_r > sIZE_RATIO * size_l = 
mkBalBranch0 fm_L fm_R fm_R
 | size_l > sIZE_RATIO * size_r = 
mkBalBranch1 fm_L fm_R fm_L
 | otherwise = 
mkBranch 2 key elt fm_L fm_R where 
double_L fm_l (Branch key_r elt_r _ (Branch key_rl elt_rl _ fm_rll fm_rlr) fm_rrmkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l _ fm_ll (Branch key_lr elt_lr _ fm_lrl fm_lrr)) fm_r mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
mkBalBranch0 fm_L fm_R (Branch _ _ _ fm_rl fm_rr
 | sizeFM fm_rl < 2 * sizeFM fm_rr = 
single_L fm_L fm_R
 | otherwise = 
double_L fm_L fm_R
mkBalBranch1 fm_L fm_R (Branch _ _ _ fm_ll fm_lr
 | sizeFM fm_lr < 2 * sizeFM fm_ll = 
single_R fm_L fm_R
 | otherwise = 
double_R fm_L fm_R
single_L fm_l (Branch key_r elt_r _ fm_rl fm_rrmkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr
single_R (Branch key_l elt_l _ fm_ll fm_lrfm_r mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l sizeFM fm_L
size_r sizeFM fm_R

  mkBranch :: Ord b => Int  ->  b  ->  a  ->  FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
mkBranch which key elt fm_l fm_r 
let 
result Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
in result
 where 
balance_ok True
left_ok left_ok0 fm_l key fm_l
left_ok0 fm_l key EmptyFM True
left_ok0 fm_l key (Branch left_key _ _ _ _) 
let 
biggest_left_key fst (findMax fm_l)
in biggest_left_key < key
left_size sizeFM fm_l
right_ok right_ok0 fm_r key fm_r
right_ok0 fm_r key EmptyFM True
right_ok0 fm_r key (Branch right_key _ _ _ _) 
let 
smallest_right_key fst (findMin fm_r)
in key < smallest_right_key
right_size sizeFM fm_r
unbox :: Int  ->  Int
unbox x x

  sIZE_RATIO :: Int
sIZE_RATIO 5

  sizeFM :: FiniteMap b a  ->  Int
sizeFM EmptyFM 0
sizeFM (Branch _ _ size _ _) size


module Maybe where
  import qualified FiniteMap
import qualified Prelude



Replaced joker patterns by fresh variables and removed binding patterns.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
HASKELL
                  ↳ COR

mainModule FiniteMap
  ((delFromFM :: (Ord a, Ord b) => FiniteMap (a,b) c  ->  (a,b ->  FiniteMap (a,b) c) :: (Ord b, Ord a) => FiniteMap (a,b) c  ->  (a,b ->  FiniteMap (a,b) c)

module FiniteMap where
  import qualified Maybe
import qualified Prelude

  data FiniteMap a b = EmptyFM  | Branch a b Int (FiniteMap a b) (FiniteMap a b


  instance (Eq a, Eq b) => Eq (FiniteMap a b) where 
   
(==) fm_1 fm_2 sizeFM fm_1 == sizeFM fm_2 && fmToList fm_1 == fmToList fm_2

  delFromFM :: Ord a => FiniteMap a b  ->  a  ->  FiniteMap a b
delFromFM EmptyFM del_key emptyFM
delFromFM (Branch key elt size fm_l fm_rdel_key 
 | del_key > key = 
mkBalBranch key elt fm_l (delFromFM fm_r del_key)
 | del_key < key = 
mkBalBranch key elt (delFromFM fm_l del_key) fm_r
 | key == del_key = 
glueBal fm_l fm_r

  deleteMax :: Ord b => FiniteMap b a  ->  FiniteMap b a
deleteMax (Branch key elt yv fm_l EmptyFMfm_l
deleteMax (Branch key elt yw fm_l fm_rmkBalBranch key elt fm_l (deleteMax fm_r)

  deleteMin :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMin (Branch key elt vvz EmptyFM fm_rfm_r
deleteMin (Branch key elt vwu fm_l fm_rmkBalBranch key elt (deleteMin fm_l) fm_r

  emptyFM :: FiniteMap a b
emptyFM EmptyFM

  findMax :: FiniteMap b a  ->  (b,a)
findMax (Branch key elt vvv vvw EmptyFM(key,elt)
findMax (Branch key elt vvx vvy fm_rfindMax fm_r

  findMin :: FiniteMap a b  ->  (a,b)
findMin (Branch key elt wz EmptyFM xu(key,elt)
findMin (Branch key elt xv fm_l xwfindMin fm_l

  fmToList :: FiniteMap a b  ->  [(a,b)]
fmToList fm foldFM fmToList0 [] fm

  
fmToList0 key elt rest (key,elt: rest

  foldFM :: (c  ->  a  ->  b  ->  b ->  b  ->  FiniteMap c a  ->  b
foldFM k z EmptyFM z
foldFM k z (Branch key elt wy fm_l fm_rfoldFM k (k key elt (foldFM k z fm_r)) fm_l

  glueBal :: Ord b => FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
glueBal EmptyFM fm2 fm2
glueBal fm1 EmptyFM fm1
glueBal fm1 fm2 
 | sizeFM fm2 > sizeFM fm1 = 
mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
 | otherwise = 
mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2 where 
mid_elt1 mid_elt10 vv2
mid_elt10 (vux,mid_elt1mid_elt1
mid_elt2 mid_elt20 vv3
mid_elt20 (vuy,mid_elt2mid_elt2
mid_key1 mid_key10 vv2
mid_key10 (mid_key1,vuzmid_key1
mid_key2 mid_key20 vv3
mid_key20 (mid_key2,vvumid_key2
vv2 findMax fm1
vv3 findMin fm2

  mkBalBranch :: Ord a => a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBalBranch key elt fm_L fm_R 
 | size_l + size_r < 2 = 
mkBranch 1 key elt fm_L fm_R
 | size_r > sIZE_RATIO * size_l = 
mkBalBranch0 fm_L fm_R fm_R
 | size_l > sIZE_RATIO * size_r = 
mkBalBranch1 fm_L fm_R fm_L
 | otherwise = 
mkBranch 2 key elt fm_L fm_R where 
double_L fm_l (Branch key_r elt_r zx (Branch key_rl elt_rl zy fm_rll fm_rlr) fm_rrmkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l yy fm_ll (Branch key_lr elt_lr yz fm_lrl fm_lrr)) fm_r mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
mkBalBranch0 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr
 | sizeFM fm_rl < 2 * sizeFM fm_rr = 
single_L fm_L fm_R
 | otherwise = 
double_L fm_L fm_R
mkBalBranch1 fm_L fm_R (Branch zu zv zw fm_ll fm_lr
 | sizeFM fm_lr < 2 * sizeFM fm_ll = 
single_R fm_L fm_R
 | otherwise = 
double_R fm_L fm_R
single_L fm_l (Branch key_r elt_r vuw fm_rl fm_rrmkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr
single_R (Branch key_l elt_l yx fm_ll fm_lrfm_r mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l sizeFM fm_L
size_r sizeFM fm_R

  mkBranch :: Ord a => Int  ->  a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBranch which key elt fm_l fm_r 
let 
result Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
in result
 where 
balance_ok True
left_ok left_ok0 fm_l key fm_l
left_ok0 fm_l key EmptyFM True
left_ok0 fm_l key (Branch left_key vw vx vy vz
let 
biggest_left_key fst (findMax fm_l)
in biggest_left_key < key
left_size sizeFM fm_l
right_ok right_ok0 fm_r key fm_r
right_ok0 fm_r key EmptyFM True
right_ok0 fm_r key (Branch right_key wu wv ww wx
let 
smallest_right_key fst (findMin fm_r)
in key < smallest_right_key
right_size sizeFM fm_r
unbox :: Int  ->  Int
unbox x x

  sIZE_RATIO :: Int
sIZE_RATIO 5

  sizeFM :: FiniteMap a b  ->  Int
sizeFM EmptyFM 0
sizeFM (Branch xx xy size xz yusize


module Maybe where
  import qualified FiniteMap
import qualified Prelude



Cond Reductions:
The following Function with conditions
mkBalBranch1 fm_L fm_R (Branch zu zv zw fm_ll fm_lr)
 | sizeFM fm_lr < 2 * sizeFM fm_ll
 = single_R fm_L fm_R
 | otherwise
 = double_R fm_L fm_R

is transformed to
mkBalBranch1 fm_L fm_R (Branch zu zv zw fm_ll fm_lr) = mkBalBranch12 fm_L fm_R (Branch zu zv zw fm_ll fm_lr)

mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr True = single_R fm_L fm_R
mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr False = mkBalBranch10 fm_L fm_R zu zv zw fm_ll fm_lr otherwise

mkBalBranch10 fm_L fm_R zu zv zw fm_ll fm_lr True = double_R fm_L fm_R

mkBalBranch12 fm_L fm_R (Branch zu zv zw fm_ll fm_lr) = mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll)

The following Function with conditions
mkBalBranch0 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)
 | sizeFM fm_rl < 2 * sizeFM fm_rr
 = single_L fm_L fm_R
 | otherwise
 = double_L fm_L fm_R

is transformed to
mkBalBranch0 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr) = mkBalBranch02 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)

mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr True = single_L fm_L fm_R
mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr False = mkBalBranch00 fm_L fm_R zz vuu vuv fm_rl fm_rr otherwise

mkBalBranch00 fm_L fm_R zz vuu vuv fm_rl fm_rr True = double_L fm_L fm_R

mkBalBranch02 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr) = mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr)

The following Function with conditions
mkBalBranch key elt fm_L fm_R
 | size_l + size_r < 2
 = mkBranch 1 key elt fm_L fm_R
 | size_r > sIZE_RATIO * size_l
 = mkBalBranch0 fm_L fm_R fm_R
 | size_l > sIZE_RATIO * size_r
 = mkBalBranch1 fm_L fm_R fm_L
 | otherwise
 = mkBranch 2 key elt fm_L fm_R
where 
double_L fm_l (Branch key_r elt_r zx (Branch key_rl elt_rl zy fm_rll fm_rlrfm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l yy fm_ll (Branch key_lr elt_lr yz fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
mkBalBranch0 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)
 | sizeFM fm_rl < 2 * sizeFM fm_rr
 = single_L fm_L fm_R
 | otherwise
 = double_L fm_L fm_R
mkBalBranch1 fm_L fm_R (Branch zu zv zw fm_ll fm_lr)
 | sizeFM fm_lr < 2 * sizeFM fm_ll
 = single_R fm_L fm_R
 | otherwise
 = double_R fm_L fm_R
single_L fm_l (Branch key_r elt_r vuw fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rlfm_rr
single_R (Branch key_l elt_l yx fm_ll fm_lrfm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l  = sizeFM fm_L
size_r  = sizeFM fm_R

is transformed to
mkBalBranch key elt fm_L fm_R = mkBalBranch6 key elt fm_L fm_R

mkBalBranch6 key elt fm_L fm_R = 
mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2)
where 
double_L fm_l (Branch key_r elt_r zx (Branch key_rl elt_rl zy fm_rll fm_rlrfm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l yy fm_ll (Branch key_lr elt_lr yz fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
mkBalBranch0 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr) = mkBalBranch02 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)
mkBalBranch00 fm_L fm_R zz vuu vuv fm_rl fm_rr True = double_L fm_L fm_R
mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr True = single_L fm_L fm_R
mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr False = mkBalBranch00 fm_L fm_R zz vuu vuv fm_rl fm_rr otherwise
mkBalBranch02 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr) = mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr)
mkBalBranch1 fm_L fm_R (Branch zu zv zw fm_ll fm_lr) = mkBalBranch12 fm_L fm_R (Branch zu zv zw fm_ll fm_lr)
mkBalBranch10 fm_L fm_R zu zv zw fm_ll fm_lr True = double_R fm_L fm_R
mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr True = single_R fm_L fm_R
mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr False = mkBalBranch10 fm_L fm_R zu zv zw fm_ll fm_lr otherwise
mkBalBranch12 fm_L fm_R (Branch zu zv zw fm_ll fm_lr) = mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll)
mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R
mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L
mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise
mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R
mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r)
mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R
mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l)
single_L fm_l (Branch key_r elt_r vuw fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rlfm_rr
single_R (Branch key_l elt_l yx fm_ll fm_lrfm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l  = sizeFM fm_L
size_r  = sizeFM fm_R

The following Function with conditions
glueBal EmptyFM fm2 = fm2
glueBal fm1 EmptyFM = fm1
glueBal fm1 fm2
 | sizeFM fm2 > sizeFM fm1
 = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
 | otherwise
 = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1fm2
where 
mid_elt1  = mid_elt10 vv2
mid_elt10 (vux,mid_elt1) = mid_elt1
mid_elt2  = mid_elt20 vv3
mid_elt20 (vuy,mid_elt2) = mid_elt2
mid_key1  = mid_key10 vv2
mid_key10 (mid_key1,vuz) = mid_key1
mid_key2  = mid_key20 vv3
mid_key20 (mid_key2,vvu) = mid_key2
vv2  = findMax fm1
vv3  = findMin fm2

is transformed to
glueBal EmptyFM fm2 = glueBal4 EmptyFM fm2
glueBal fm1 EmptyFM = glueBal3 fm1 EmptyFM
glueBal fm1 fm2 = glueBal2 fm1 fm2

glueBal2 fm1 fm2 = 
glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1)
where 
glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1fm2
glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise
mid_elt1  = mid_elt10 vv2
mid_elt10 (vux,mid_elt1) = mid_elt1
mid_elt2  = mid_elt20 vv3
mid_elt20 (vuy,mid_elt2) = mid_elt2
mid_key1  = mid_key10 vv2
mid_key10 (mid_key1,vuz) = mid_key1
mid_key2  = mid_key20 vv3
mid_key20 (mid_key2,vvu) = mid_key2
vv2  = findMax fm1
vv3  = findMin fm2

glueBal3 fm1 EmptyFM = fm1
glueBal3 wvv wvw = glueBal2 wvv wvw

glueBal4 EmptyFM fm2 = fm2
glueBal4 wvy wvz = glueBal3 wvy wvz

The following Function with conditions
delFromFM EmptyFM del_key = emptyFM
delFromFM (Branch key elt size fm_l fm_rdel_key
 | del_key > key
 = mkBalBranch key elt fm_l (delFromFM fm_r del_key)
 | del_key < key
 = mkBalBranch key elt (delFromFM fm_l del_keyfm_r
 | key == del_key
 = glueBal fm_l fm_r

is transformed to
delFromFM EmptyFM del_key = delFromFM4 EmptyFM del_key
delFromFM (Branch key elt size fm_l fm_rdel_key = delFromFM3 (Branch key elt size fm_l fm_rdel_key

delFromFM2 key elt size fm_l fm_r del_key True = mkBalBranch key elt fm_l (delFromFM fm_r del_key)
delFromFM2 key elt size fm_l fm_r del_key False = delFromFM1 key elt size fm_l fm_r del_key (del_key < key)

delFromFM1 key elt size fm_l fm_r del_key True = mkBalBranch key elt (delFromFM fm_l del_keyfm_r
delFromFM1 key elt size fm_l fm_r del_key False = delFromFM0 key elt size fm_l fm_r del_key (key == del_key)

delFromFM0 key elt size fm_l fm_r del_key True = glueBal fm_l fm_r

delFromFM3 (Branch key elt size fm_l fm_rdel_key = delFromFM2 key elt size fm_l fm_r del_key (del_key > key)

delFromFM4 EmptyFM del_key = emptyFM
delFromFM4 www wwx = delFromFM3 www wwx

The following Function with conditions
compare x y
 | x == y
 = EQ
 | x <= y
 = LT
 | otherwise
 = GT

is transformed to
compare x y = compare3 x y

compare1 x y True = LT
compare1 x y False = compare0 x y otherwise

compare0 x y True = GT

compare2 x y True = EQ
compare2 x y False = compare1 x y (x <= y)

compare3 x y = compare2 x y (x == y)

The following Function with conditions
gcd' x 0 = x
gcd' x y = gcd' y (x `rem` y)

is transformed to
gcd' x wwy = gcd'2 x wwy
gcd' x y = gcd'0 x y

gcd'0 x y = gcd' y (x `rem` y)

gcd'1 True x wwy = x
gcd'1 wwz wxu wxv = gcd'0 wxu wxv

gcd'2 x wwy = gcd'1 (wwy == 0) x wwy
gcd'2 wxw wxx = gcd'0 wxw wxx

The following Function with conditions
gcd 0 0 = error []
gcd x y = 
gcd' (abs x) (abs y)
where 
gcd' x 0 = x
gcd' x y = gcd' y (x `rem` y)

is transformed to
gcd wxy wxz = gcd3 wxy wxz
gcd x y = gcd0 x y

gcd0 x y = 
gcd' (abs x) (abs y)
where 
gcd' x wwy = gcd'2 x wwy
gcd' x y = gcd'0 x y
gcd'0 x y = gcd' y (x `rem` y)
gcd'1 True x wwy = x
gcd'1 wwz wxu wxv = gcd'0 wxu wxv
gcd'2 x wwy = gcd'1 (wwy == 0) x wwy
gcd'2 wxw wxx = gcd'0 wxw wxx

gcd1 True wxy wxz = error []
gcd1 wyu wyv wyw = gcd0 wyv wyw

gcd2 True wxy wxz = gcd1 (wxz == 0) wxy wxz
gcd2 wyx wyy wyz = gcd0 wyy wyz

gcd3 wxy wxz = gcd2 (wxy == 0) wxy wxz
gcd3 wzu wzv = gcd0 wzu wzv

The following Function with conditions
absReal x
 | x >= 0
 = x
 | otherwise
 = `negate` x

is transformed to
absReal x = absReal2 x

absReal0 x True = `negate` x

absReal1 x True = x
absReal1 x False = absReal0 x otherwise

absReal2 x = absReal1 x (x >= 0)

The following Function with conditions
undefined 
 | False
 = undefined

is transformed to
undefined  = undefined1

undefined0 True = undefined

undefined1  = undefined0 False

The following Function with conditions
reduce x y
 | y == 0
 = error []
 | otherwise
 = x `quot` d :% (y `quot` d)
where 
d  = gcd x y

is transformed to
reduce x y = reduce2 x y

reduce2 x y = 
reduce1 x y (y == 0)
where 
d  = gcd x y
reduce0 x y True = x `quot` d :% (y `quot` d)
reduce1 x y True = error []
reduce1 x y False = reduce0 x y otherwise



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
HASKELL
                      ↳ LetRed

mainModule FiniteMap
  ((delFromFM :: (Ord c, Ord b) => FiniteMap (c,b) a  ->  (c,b ->  FiniteMap (c,b) a) :: (Ord c, Ord b) => FiniteMap (c,b) a  ->  (c,b ->  FiniteMap (c,b) a)

module FiniteMap where
  import qualified Maybe
import qualified Prelude

  data FiniteMap a b = EmptyFM  | Branch a b Int (FiniteMap a b) (FiniteMap a b


  instance (Eq a, Eq b) => Eq (FiniteMap b a) where 
   
(==) fm_1 fm_2 sizeFM fm_1 == sizeFM fm_2 && fmToList fm_1 == fmToList fm_2

  delFromFM :: Ord b => FiniteMap b a  ->  b  ->  FiniteMap b a
delFromFM EmptyFM del_key delFromFM4 EmptyFM del_key
delFromFM (Branch key elt size fm_l fm_rdel_key delFromFM3 (Branch key elt size fm_l fm_r) del_key

  
delFromFM0 key elt size fm_l fm_r del_key True glueBal fm_l fm_r

  
delFromFM1 key elt size fm_l fm_r del_key True mkBalBranch key elt (delFromFM fm_l del_key) fm_r
delFromFM1 key elt size fm_l fm_r del_key False delFromFM0 key elt size fm_l fm_r del_key (key == del_key)

  
delFromFM2 key elt size fm_l fm_r del_key True mkBalBranch key elt fm_l (delFromFM fm_r del_key)
delFromFM2 key elt size fm_l fm_r del_key False delFromFM1 key elt size fm_l fm_r del_key (del_key < key)

  
delFromFM3 (Branch key elt size fm_l fm_rdel_key delFromFM2 key elt size fm_l fm_r del_key (del_key > key)

  
delFromFM4 EmptyFM del_key emptyFM
delFromFM4 www wwx delFromFM3 www wwx

  deleteMax :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMax (Branch key elt yv fm_l EmptyFMfm_l
deleteMax (Branch key elt yw fm_l fm_rmkBalBranch key elt fm_l (deleteMax fm_r)

  deleteMin :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMin (Branch key elt vvz EmptyFM fm_rfm_r
deleteMin (Branch key elt vwu fm_l fm_rmkBalBranch key elt (deleteMin fm_l) fm_r

  emptyFM :: FiniteMap b a
emptyFM EmptyFM

  findMax :: FiniteMap a b  ->  (a,b)
findMax (Branch key elt vvv vvw EmptyFM(key,elt)
findMax (Branch key elt vvx vvy fm_rfindMax fm_r

  findMin :: FiniteMap a b  ->  (a,b)
findMin (Branch key elt wz EmptyFM xu(key,elt)
findMin (Branch key elt xv fm_l xwfindMin fm_l

  fmToList :: FiniteMap a b  ->  [(a,b)]
fmToList fm foldFM fmToList0 [] fm

  
fmToList0 key elt rest (key,elt: rest

  foldFM :: (c  ->  b  ->  a  ->  a ->  a  ->  FiniteMap c b  ->  a
foldFM k z EmptyFM z
foldFM k z (Branch key elt wy fm_l fm_rfoldFM k (k key elt (foldFM k z fm_r)) fm_l

  glueBal :: Ord b => FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
glueBal EmptyFM fm2 glueBal4 EmptyFM fm2
glueBal fm1 EmptyFM glueBal3 fm1 EmptyFM
glueBal fm1 fm2 glueBal2 fm1 fm2

  
glueBal2 fm1 fm2 
glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1) where 
glueBal0 fm1 fm2 True mkBalBranch mid_key1 mid_elt1 (deleteMax fm1) fm2
glueBal1 fm1 fm2 True mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
glueBal1 fm1 fm2 False glueBal0 fm1 fm2 otherwise
mid_elt1 mid_elt10 vv2
mid_elt10 (vux,mid_elt1mid_elt1
mid_elt2 mid_elt20 vv3
mid_elt20 (vuy,mid_elt2mid_elt2
mid_key1 mid_key10 vv2
mid_key10 (mid_key1,vuzmid_key1
mid_key2 mid_key20 vv3
mid_key20 (mid_key2,vvumid_key2
vv2 findMax fm1
vv3 findMin fm2

  
glueBal3 fm1 EmptyFM fm1
glueBal3 wvv wvw glueBal2 wvv wvw

  
glueBal4 EmptyFM fm2 fm2
glueBal4 wvy wvz glueBal3 wvy wvz

  mkBalBranch :: Ord a => a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBalBranch key elt fm_L fm_R mkBalBranch6 key elt fm_L fm_R

  
mkBalBranch6 key elt fm_L fm_R 
mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2) where 
double_L fm_l (Branch key_r elt_r zx (Branch key_rl elt_rl zy fm_rll fm_rlr) fm_rrmkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l yy fm_ll (Branch key_lr elt_lr yz fm_lrl fm_lrr)) fm_r mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
mkBalBranch0 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rrmkBalBranch02 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)
mkBalBranch00 fm_L fm_R zz vuu vuv fm_rl fm_rr True double_L fm_L fm_R
mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr True single_L fm_L fm_R
mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr False mkBalBranch00 fm_L fm_R zz vuu vuv fm_rl fm_rr otherwise
mkBalBranch02 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rrmkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr)
mkBalBranch1 fm_L fm_R (Branch zu zv zw fm_ll fm_lrmkBalBranch12 fm_L fm_R (Branch zu zv zw fm_ll fm_lr)
mkBalBranch10 fm_L fm_R zu zv zw fm_ll fm_lr True double_R fm_L fm_R
mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr True single_R fm_L fm_R
mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr False mkBalBranch10 fm_L fm_R zu zv zw fm_ll fm_lr otherwise
mkBalBranch12 fm_L fm_R (Branch zu zv zw fm_ll fm_lrmkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll)
mkBalBranch2 key elt fm_L fm_R True mkBranch 2 key elt fm_L fm_R
mkBalBranch3 key elt fm_L fm_R True mkBalBranch1 fm_L fm_R fm_L
mkBalBranch3 key elt fm_L fm_R False mkBalBranch2 key elt fm_L fm_R otherwise
mkBalBranch4 key elt fm_L fm_R True mkBalBranch0 fm_L fm_R fm_R
mkBalBranch4 key elt fm_L fm_R False mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r)
mkBalBranch5 key elt fm_L fm_R True mkBranch 1 key elt fm_L fm_R
mkBalBranch5 key elt fm_L fm_R False mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l)
single_L fm_l (Branch key_r elt_r vuw fm_rl fm_rrmkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rl) fm_rr
single_R (Branch key_l elt_l yx fm_ll fm_lrfm_r mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l sizeFM fm_L
size_r sizeFM fm_R

  mkBranch :: Ord b => Int  ->  b  ->  a  ->  FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
mkBranch which key elt fm_l fm_r 
let 
result Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
in result
 where 
balance_ok True
left_ok left_ok0 fm_l key fm_l
left_ok0 fm_l key EmptyFM True
left_ok0 fm_l key (Branch left_key vw vx vy vz
let 
biggest_left_key fst (findMax fm_l)
in biggest_left_key < key
left_size sizeFM fm_l
right_ok right_ok0 fm_r key fm_r
right_ok0 fm_r key EmptyFM True
right_ok0 fm_r key (Branch right_key wu wv ww wx
let 
smallest_right_key fst (findMin fm_r)
in key < smallest_right_key
right_size sizeFM fm_r
unbox :: Int  ->  Int
unbox x x

  sIZE_RATIO :: Int
sIZE_RATIO 5

  sizeFM :: FiniteMap b a  ->  Int
sizeFM EmptyFM 0
sizeFM (Branch xx xy size xz yusize


module Maybe where
  import qualified FiniteMap
import qualified Prelude



Let/Where Reductions:
The bindings of the following Let/Where expression
let 
result  = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
in result
where 
balance_ok  = True
left_ok  = left_ok0 fm_l key fm_l
left_ok0 fm_l key EmptyFM = True
left_ok0 fm_l key (Branch left_key vw vx vy vz) = 
let 
biggest_left_key  = fst (findMax fm_l)
in biggest_left_key < key
left_size  = sizeFM fm_l
right_ok  = right_ok0 fm_r key fm_r
right_ok0 fm_r key EmptyFM = True
right_ok0 fm_r key (Branch right_key wu wv ww wx) = 
let 
smallest_right_key  = fst (findMin fm_r)
in key < smallest_right_key
right_size  = sizeFM fm_r
unbox x = x

are unpacked to the following functions on top level
mkBranchUnbox wzw wzx wzy x = x

mkBranchLeft_ok wzw wzx wzy = mkBranchLeft_ok0 wzw wzx wzy wzw wzx wzw

mkBranchBalance_ok wzw wzx wzy = True

mkBranchLeft_size wzw wzx wzy = sizeFM wzw

mkBranchRight_ok wzw wzx wzy = mkBranchRight_ok0 wzw wzx wzy wzy wzx wzy

mkBranchLeft_ok0 wzw wzx wzy fm_l key EmptyFM = True
mkBranchLeft_ok0 wzw wzx wzy fm_l key (Branch left_key vw vx vy vz) = mkBranchLeft_ok0Biggest_left_key fm_l < key

mkBranchRight_size wzw wzx wzy = sizeFM wzy

mkBranchRight_ok0 wzw wzx wzy fm_r key EmptyFM = True
mkBranchRight_ok0 wzw wzx wzy fm_r key (Branch right_key wu wv ww wx) = key < mkBranchRight_ok0Smallest_right_key fm_r

The bindings of the following Let/Where expression
let 
result  = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
in result

are unpacked to the following functions on top level
mkBranchResult wzz xuu xuv xuw = Branch wzz xuu (mkBranchUnbox xuv wzz xuw (1 + mkBranchLeft_size xuv wzz xuw + mkBranchRight_size xuv wzz xuw)) xuv xuw

The bindings of the following Let/Where expression
mkBalBranch5 key elt fm_L fm_R (size_l + size_r < 2)
where 
double_L fm_l (Branch key_r elt_r zx (Branch key_rl elt_rl zy fm_rll fm_rlrfm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 key elt fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)
double_R (Branch key_l elt_l yy fm_ll (Branch key_lr elt_lr yz fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 key elt fm_lrr fm_r)
mkBalBranch0 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr) = mkBalBranch02 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)
mkBalBranch00 fm_L fm_R zz vuu vuv fm_rl fm_rr True = double_L fm_L fm_R
mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr True = single_L fm_L fm_R
mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr False = mkBalBranch00 fm_L fm_R zz vuu vuv fm_rl fm_rr otherwise
mkBalBranch02 fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr) = mkBalBranch01 fm_L fm_R zz vuu vuv fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr)
mkBalBranch1 fm_L fm_R (Branch zu zv zw fm_ll fm_lr) = mkBalBranch12 fm_L fm_R (Branch zu zv zw fm_ll fm_lr)
mkBalBranch10 fm_L fm_R zu zv zw fm_ll fm_lr True = double_R fm_L fm_R
mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr True = single_R fm_L fm_R
mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr False = mkBalBranch10 fm_L fm_R zu zv zw fm_ll fm_lr otherwise
mkBalBranch12 fm_L fm_R (Branch zu zv zw fm_ll fm_lr) = mkBalBranch11 fm_L fm_R zu zv zw fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll)
mkBalBranch2 key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R
mkBalBranch3 key elt fm_L fm_R True = mkBalBranch1 fm_L fm_R fm_L
mkBalBranch3 key elt fm_L fm_R False = mkBalBranch2 key elt fm_L fm_R otherwise
mkBalBranch4 key elt fm_L fm_R True = mkBalBranch0 fm_L fm_R fm_R
mkBalBranch4 key elt fm_L fm_R False = mkBalBranch3 key elt fm_L fm_R (size_l > sIZE_RATIO * size_r)
mkBalBranch5 key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R
mkBalBranch5 key elt fm_L fm_R False = mkBalBranch4 key elt fm_L fm_R (size_r > sIZE_RATIO * size_l)
single_L fm_l (Branch key_r elt_r vuw fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 key elt fm_l fm_rlfm_rr
single_R (Branch key_l elt_l yx fm_ll fm_lrfm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 key elt fm_lr fm_r)
size_l  = sizeFM fm_L
size_r  = sizeFM fm_R

are unpacked to the following functions on top level
mkBalBranch6MkBalBranch1 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lr) = mkBalBranch6MkBalBranch12 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lr)

mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R True = mkBalBranch6MkBalBranch1 xux xuy xuz xvu fm_L fm_R fm_L
mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R False = mkBalBranch6MkBalBranch2 xux xuy xuz xvu key elt fm_L fm_R otherwise

mkBalBranch6MkBalBranch5 xux xuy xuz xvu key elt fm_L fm_R True = mkBranch 1 key elt fm_L fm_R
mkBalBranch6MkBalBranch5 xux xuy xuz xvu key elt fm_L fm_R False = mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R (mkBalBranch6Size_r xux xuy xuz xvu > sIZE_RATIO * mkBalBranch6Size_l xux xuy xuz xvu)

mkBalBranch6MkBalBranch2 xux xuy xuz xvu key elt fm_L fm_R True = mkBranch 2 key elt fm_L fm_R

mkBalBranch6Double_L xux xuy xuz xvu fm_l (Branch key_r elt_r zx (Branch key_rl elt_rl zy fm_rll fm_rlrfm_rr) = mkBranch 5 key_rl elt_rl (mkBranch 6 xux xuy fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)

mkBalBranch6Single_L xux xuy xuz xvu fm_l (Branch key_r elt_r vuw fm_rl fm_rr) = mkBranch 3 key_r elt_r (mkBranch 4 xux xuy fm_l fm_rlfm_rr

mkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr True = mkBalBranch6Single_L xux xuy xuz xvu fm_L fm_R
mkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr False = mkBalBranch6MkBalBranch00 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr otherwise

mkBalBranch6MkBalBranch0 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr) = mkBalBranch6MkBalBranch02 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)

mkBalBranch6Size_r xux xuy xuz xvu = sizeFM xuz

mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R True = mkBalBranch6MkBalBranch0 xux xuy xuz xvu fm_L fm_R fm_R
mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R False = mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R (mkBalBranch6Size_l xux xuy xuz xvu > sIZE_RATIO * mkBalBranch6Size_r xux xuy xuz xvu)

mkBalBranch6MkBalBranch00 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr True = mkBalBranch6Double_L xux xuy xuz xvu fm_L fm_R

mkBalBranch6MkBalBranch12 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lr) = mkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll)

mkBalBranch6Single_R xux xuy xuz xvu (Branch key_l elt_l yx fm_ll fm_lrfm_r = mkBranch 8 key_l elt_l fm_ll (mkBranch 9 xux xuy fm_lr fm_r)

mkBalBranch6MkBalBranch10 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr True = mkBalBranch6Double_R xux xuy xuz xvu fm_L fm_R

mkBalBranch6Double_R xux xuy xuz xvu (Branch key_l elt_l yy fm_ll (Branch key_lr elt_lr yz fm_lrl fm_lrr)) fm_r = mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 xux xuy fm_lrr fm_r)

mkBalBranch6Size_l xux xuy xuz xvu = sizeFM xvu

mkBalBranch6MkBalBranch02 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr) = mkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr)

mkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr True = mkBalBranch6Single_R xux xuy xuz xvu fm_L fm_R
mkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr False = mkBalBranch6MkBalBranch10 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr otherwise

The bindings of the following Let/Where expression
glueBal1 fm1 fm2 (sizeFM fm2 > sizeFM fm1)
where 
glueBal0 fm1 fm2 True = mkBalBranch mid_key1 mid_elt1 (deleteMax fm1fm2
glueBal1 fm1 fm2 True = mkBalBranch mid_key2 mid_elt2 fm1 (deleteMin fm2)
glueBal1 fm1 fm2 False = glueBal0 fm1 fm2 otherwise
mid_elt1  = mid_elt10 vv2
mid_elt10 (vux,mid_elt1) = mid_elt1
mid_elt2  = mid_elt20 vv3
mid_elt20 (vuy,mid_elt2) = mid_elt2
mid_key1  = mid_key10 vv2
mid_key10 (mid_key1,vuz) = mid_key1
mid_key2  = mid_key20 vv3
mid_key20 (mid_key2,vvu) = mid_key2
vv2  = findMax fm1
vv3  = findMin fm2

are unpacked to the following functions on top level
glueBal2Vv2 xvv xvw = findMax xvv

glueBal2Mid_elt20 xvv xvw (vuy,mid_elt2) = mid_elt2

glueBal2Mid_key1 xvv xvw = glueBal2Mid_key10 xvv xvw (glueBal2Vv2 xvv xvw)

glueBal2Vv3 xvv xvw = findMin xvw

glueBal2GlueBal1 xvv xvw fm1 fm2 True = mkBalBranch (glueBal2Mid_key2 xvv xvw) (glueBal2Mid_elt2 xvv xvwfm1 (deleteMin fm2)
glueBal2GlueBal1 xvv xvw fm1 fm2 False = glueBal2GlueBal0 xvv xvw fm1 fm2 otherwise

glueBal2Mid_elt2 xvv xvw = glueBal2Mid_elt20 xvv xvw (glueBal2Vv3 xvv xvw)

glueBal2Mid_elt1 xvv xvw = glueBal2Mid_elt10 xvv xvw (glueBal2Vv2 xvv xvw)

glueBal2Mid_key20 xvv xvw (mid_key2,vvu) = mid_key2

glueBal2GlueBal0 xvv xvw fm1 fm2 True = mkBalBranch (glueBal2Mid_key1 xvv xvw) (glueBal2Mid_elt1 xvv xvw) (deleteMax fm1fm2

glueBal2Mid_key10 xvv xvw (mid_key1,vuz) = mid_key1

glueBal2Mid_elt10 xvv xvw (vux,mid_elt1) = mid_elt1

glueBal2Mid_key2 xvv xvw = glueBal2Mid_key20 xvv xvw (glueBal2Vv3 xvv xvw)

The bindings of the following Let/Where expression
let 
biggest_left_key  = fst (findMax fm_l)
in biggest_left_key < key

are unpacked to the following functions on top level
mkBranchLeft_ok0Biggest_left_key xvx = fst (findMax xvx)

The bindings of the following Let/Where expression
let 
smallest_right_key  = fst (findMin fm_r)
in key < smallest_right_key

are unpacked to the following functions on top level
mkBranchRight_ok0Smallest_right_key xvy = fst (findMin xvy)

The bindings of the following Let/Where expression
reduce1 x y (y == 0)
where 
d  = gcd x y
reduce0 x y True = x `quot` d :% (y `quot` d)
reduce1 x y True = error []
reduce1 x y False = reduce0 x y otherwise

are unpacked to the following functions on top level
reduce2Reduce0 xvz xwu x y True = x `quot` reduce2D xvz xwu :% (y `quot` reduce2D xvz xwu)

reduce2D xvz xwu = gcd xvz xwu

reduce2Reduce1 xvz xwu x y True = error []
reduce2Reduce1 xvz xwu x y False = reduce2Reduce0 xvz xwu x y otherwise

The bindings of the following Let/Where expression
gcd' (abs x) (abs y)
where 
gcd' x wwy = gcd'2 x wwy
gcd' x y = gcd'0 x y
gcd'0 x y = gcd' y (x `rem` y)
gcd'1 True x wwy = x
gcd'1 wwz wxu wxv = gcd'0 wxu wxv
gcd'2 x wwy = gcd'1 (wwy == 0) x wwy
gcd'2 wxw wxx = gcd'0 wxw wxx

are unpacked to the following functions on top level
gcd0Gcd'0 x y = gcd0Gcd' y (x `rem` y)

gcd0Gcd'1 True x wwy = x
gcd0Gcd'1 wwz wxu wxv = gcd0Gcd'0 wxu wxv

gcd0Gcd' x wwy = gcd0Gcd'2 x wwy
gcd0Gcd' x y = gcd0Gcd'0 x y

gcd0Gcd'2 x wwy = gcd0Gcd'1 (wwy == 0) x wwy
gcd0Gcd'2 wxw wxx = gcd0Gcd'0 wxw wxx



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
HASKELL
                          ↳ NumRed

mainModule FiniteMap
  ((delFromFM :: (Ord b, Ord a) => FiniteMap (b,a) c  ->  (b,a ->  FiniteMap (b,a) c) :: (Ord b, Ord a) => FiniteMap (b,a) c  ->  (b,a ->  FiniteMap (b,a) c)

module FiniteMap where
  import qualified Maybe
import qualified Prelude

  data FiniteMap b a = EmptyFM  | Branch b a Int (FiniteMap b a) (FiniteMap b a


  instance (Eq a, Eq b) => Eq (FiniteMap b a) where 
   
(==) fm_1 fm_2 sizeFM fm_1 == sizeFM fm_2 && fmToList fm_1 == fmToList fm_2

  delFromFM :: Ord a => FiniteMap a b  ->  a  ->  FiniteMap a b
delFromFM EmptyFM del_key delFromFM4 EmptyFM del_key
delFromFM (Branch key elt size fm_l fm_rdel_key delFromFM3 (Branch key elt size fm_l fm_r) del_key

  
delFromFM0 key elt size fm_l fm_r del_key True glueBal fm_l fm_r

  
delFromFM1 key elt size fm_l fm_r del_key True mkBalBranch key elt (delFromFM fm_l del_key) fm_r
delFromFM1 key elt size fm_l fm_r del_key False delFromFM0 key elt size fm_l fm_r del_key (key == del_key)

  
delFromFM2 key elt size fm_l fm_r del_key True mkBalBranch key elt fm_l (delFromFM fm_r del_key)
delFromFM2 key elt size fm_l fm_r del_key False delFromFM1 key elt size fm_l fm_r del_key (del_key < key)

  
delFromFM3 (Branch key elt size fm_l fm_rdel_key delFromFM2 key elt size fm_l fm_r del_key (del_key > key)

  
delFromFM4 EmptyFM del_key emptyFM
delFromFM4 www wwx delFromFM3 www wwx

  deleteMax :: Ord b => FiniteMap b a  ->  FiniteMap b a
deleteMax (Branch key elt yv fm_l EmptyFMfm_l
deleteMax (Branch key elt yw fm_l fm_rmkBalBranch key elt fm_l (deleteMax fm_r)

  deleteMin :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMin (Branch key elt vvz EmptyFM fm_rfm_r
deleteMin (Branch key elt vwu fm_l fm_rmkBalBranch key elt (deleteMin fm_l) fm_r

  emptyFM :: FiniteMap b a
emptyFM EmptyFM

  findMax :: FiniteMap b a  ->  (b,a)
findMax (Branch key elt vvv vvw EmptyFM(key,elt)
findMax (Branch key elt vvx vvy fm_rfindMax fm_r

  findMin :: FiniteMap b a  ->  (b,a)
findMin (Branch key elt wz EmptyFM xu(key,elt)
findMin (Branch key elt xv fm_l xwfindMin fm_l

  fmToList :: FiniteMap b a  ->  [(b,a)]
fmToList fm foldFM fmToList0 [] fm

  
fmToList0 key elt rest (key,elt: rest

  foldFM :: (b  ->  c  ->  a  ->  a ->  a  ->  FiniteMap b c  ->  a
foldFM k z EmptyFM z
foldFM k z (Branch key elt wy fm_l fm_rfoldFM k (k key elt (foldFM k z fm_r)) fm_l

  glueBal :: Ord b => FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
glueBal EmptyFM fm2 glueBal4 EmptyFM fm2
glueBal fm1 EmptyFM glueBal3 fm1 EmptyFM
glueBal fm1 fm2 glueBal2 fm1 fm2

  
glueBal2 fm1 fm2 glueBal2GlueBal1 fm1 fm2 fm1 fm2 (sizeFM fm2 > sizeFM fm1)

  
glueBal2GlueBal0 xvv xvw fm1 fm2 True mkBalBranch (glueBal2Mid_key1 xvv xvw) (glueBal2Mid_elt1 xvv xvw) (deleteMax fm1) fm2

  
glueBal2GlueBal1 xvv xvw fm1 fm2 True mkBalBranch (glueBal2Mid_key2 xvv xvw) (glueBal2Mid_elt2 xvv xvw) fm1 (deleteMin fm2)
glueBal2GlueBal1 xvv xvw fm1 fm2 False glueBal2GlueBal0 xvv xvw fm1 fm2 otherwise

  
glueBal2Mid_elt1 xvv xvw glueBal2Mid_elt10 xvv xvw (glueBal2Vv2 xvv xvw)

  
glueBal2Mid_elt10 xvv xvw (vux,mid_elt1mid_elt1

  
glueBal2Mid_elt2 xvv xvw glueBal2Mid_elt20 xvv xvw (glueBal2Vv3 xvv xvw)

  
glueBal2Mid_elt20 xvv xvw (vuy,mid_elt2mid_elt2

  
glueBal2Mid_key1 xvv xvw glueBal2Mid_key10 xvv xvw (glueBal2Vv2 xvv xvw)

  
glueBal2Mid_key10 xvv xvw (mid_key1,vuzmid_key1

  
glueBal2Mid_key2 xvv xvw glueBal2Mid_key20 xvv xvw (glueBal2Vv3 xvv xvw)

  
glueBal2Mid_key20 xvv xvw (mid_key2,vvumid_key2

  
glueBal2Vv2 xvv xvw findMax xvv

  
glueBal2Vv3 xvv xvw findMin xvw

  
glueBal3 fm1 EmptyFM fm1
glueBal3 wvv wvw glueBal2 wvv wvw

  
glueBal4 EmptyFM fm2 fm2
glueBal4 wvy wvz glueBal3 wvy wvz

  mkBalBranch :: Ord a => a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBalBranch key elt fm_L fm_R mkBalBranch6 key elt fm_L fm_R

  
mkBalBranch6 key elt fm_L fm_R mkBalBranch6MkBalBranch5 key elt fm_R fm_L key elt fm_L fm_R (mkBalBranch6Size_l key elt fm_R fm_L + mkBalBranch6Size_r key elt fm_R fm_L < 2)

  
mkBalBranch6Double_L xux xuy xuz xvu fm_l (Branch key_r elt_r zx (Branch key_rl elt_rl zy fm_rll fm_rlr) fm_rrmkBranch 5 key_rl elt_rl (mkBranch 6 xux xuy fm_l fm_rll) (mkBranch 7 key_r elt_r fm_rlr fm_rr)

  
mkBalBranch6Double_R xux xuy xuz xvu (Branch key_l elt_l yy fm_ll (Branch key_lr elt_lr yz fm_lrl fm_lrr)) fm_r mkBranch 10 key_lr elt_lr (mkBranch 11 key_l elt_l fm_ll fm_lrl) (mkBranch 12 xux xuy fm_lrr fm_r)

  
mkBalBranch6MkBalBranch0 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rrmkBalBranch6MkBalBranch02 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)

  
mkBalBranch6MkBalBranch00 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr True mkBalBranch6Double_L xux xuy xuz xvu fm_L fm_R

  
mkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr True mkBalBranch6Single_L xux xuy xuz xvu fm_L fm_R
mkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr False mkBalBranch6MkBalBranch00 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr otherwise

  
mkBalBranch6MkBalBranch02 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rrmkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr (sizeFM fm_rl < 2 * sizeFM fm_rr)

  
mkBalBranch6MkBalBranch1 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lrmkBalBranch6MkBalBranch12 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lr)

  
mkBalBranch6MkBalBranch10 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr True mkBalBranch6Double_R xux xuy xuz xvu fm_L fm_R

  
mkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr True mkBalBranch6Single_R xux xuy xuz xvu fm_L fm_R
mkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr False mkBalBranch6MkBalBranch10 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr otherwise

  
mkBalBranch6MkBalBranch12 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lrmkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr (sizeFM fm_lr < 2 * sizeFM fm_ll)

  
mkBalBranch6MkBalBranch2 xux xuy xuz xvu key elt fm_L fm_R True mkBranch 2 key elt fm_L fm_R

  
mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R True mkBalBranch6MkBalBranch1 xux xuy xuz xvu fm_L fm_R fm_L
mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R False mkBalBranch6MkBalBranch2 xux xuy xuz xvu key elt fm_L fm_R otherwise

  
mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R True mkBalBranch6MkBalBranch0 xux xuy xuz xvu fm_L fm_R fm_R
mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R False mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R (mkBalBranch6Size_l xux xuy xuz xvu > sIZE_RATIO * mkBalBranch6Size_r xux xuy xuz xvu)

  
mkBalBranch6MkBalBranch5 xux xuy xuz xvu key elt fm_L fm_R True mkBranch 1 key elt fm_L fm_R
mkBalBranch6MkBalBranch5 xux xuy xuz xvu key elt fm_L fm_R False mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R (mkBalBranch6Size_r xux xuy xuz xvu > sIZE_RATIO * mkBalBranch6Size_l xux xuy xuz xvu)

  
mkBalBranch6Single_L xux xuy xuz xvu fm_l (Branch key_r elt_r vuw fm_rl fm_rrmkBranch 3 key_r elt_r (mkBranch 4 xux xuy fm_l fm_rl) fm_rr

  
mkBalBranch6Single_R xux xuy xuz xvu (Branch key_l elt_l yx fm_ll fm_lrfm_r mkBranch 8 key_l elt_l fm_ll (mkBranch 9 xux xuy fm_lr fm_r)

  
mkBalBranch6Size_l xux xuy xuz xvu sizeFM xvu

  
mkBalBranch6Size_r xux xuy xuz xvu sizeFM xuz

  mkBranch :: Ord a => Int  ->  a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBranch which key elt fm_l fm_r mkBranchResult key elt fm_l fm_r

  
mkBranchBalance_ok wzw wzx wzy True

  
mkBranchLeft_ok wzw wzx wzy mkBranchLeft_ok0 wzw wzx wzy wzw wzx wzw

  
mkBranchLeft_ok0 wzw wzx wzy fm_l key EmptyFM True
mkBranchLeft_ok0 wzw wzx wzy fm_l key (Branch left_key vw vx vy vzmkBranchLeft_ok0Biggest_left_key fm_l < key

  
mkBranchLeft_ok0Biggest_left_key xvx fst (findMax xvx)

  
mkBranchLeft_size wzw wzx wzy sizeFM wzw

  
mkBranchResult wzz xuu xuv xuw Branch wzz xuu (mkBranchUnbox xuv wzz xuw (1 + mkBranchLeft_size xuv wzz xuw + mkBranchRight_size xuv wzz xuw)) xuv xuw

  
mkBranchRight_ok wzw wzx wzy mkBranchRight_ok0 wzw wzx wzy wzy wzx wzy

  
mkBranchRight_ok0 wzw wzx wzy fm_r key EmptyFM True
mkBranchRight_ok0 wzw wzx wzy fm_r key (Branch right_key wu wv ww wxkey < mkBranchRight_ok0Smallest_right_key fm_r

  
mkBranchRight_ok0Smallest_right_key xvy fst (findMin xvy)

  
mkBranchRight_size wzw wzx wzy sizeFM wzy

  mkBranchUnbox :: Ord a =>  ->  (FiniteMap a b) ( ->  a ( ->  (FiniteMap a b) (Int  ->  Int)))
mkBranchUnbox wzw wzx wzy x x

  sIZE_RATIO :: Int
sIZE_RATIO 5

  sizeFM :: FiniteMap b a  ->  Int
sizeFM EmptyFM 0
sizeFM (Branch xx xy size xz yusize


module Maybe where
  import qualified FiniteMap
import qualified Prelude



Num Reduction: All numbers are transformed to thier corresponding representation with Pos, Neg, Succ and Zero.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
HASKELL
                              ↳ Narrow

mainModule FiniteMap
  (delFromFM :: (Ord b, Ord c) => FiniteMap (c,b) a  ->  (c,b ->  FiniteMap (c,b) a)

module FiniteMap where
  import qualified Maybe
import qualified Prelude

  data FiniteMap b a = EmptyFM  | Branch b a Int (FiniteMap b a) (FiniteMap b a


  instance (Eq a, Eq b) => Eq (FiniteMap a b) where 
   
(==) fm_1 fm_2 sizeFM fm_1 == sizeFM fm_2 && fmToList fm_1 == fmToList fm_2

  delFromFM :: Ord a => FiniteMap a b  ->  a  ->  FiniteMap a b
delFromFM EmptyFM del_key delFromFM4 EmptyFM del_key
delFromFM (Branch key elt size fm_l fm_rdel_key delFromFM3 (Branch key elt size fm_l fm_r) del_key

  
delFromFM0 key elt size fm_l fm_r del_key True glueBal fm_l fm_r

  
delFromFM1 key elt size fm_l fm_r del_key True mkBalBranch key elt (delFromFM fm_l del_key) fm_r
delFromFM1 key elt size fm_l fm_r del_key False delFromFM0 key elt size fm_l fm_r del_key (key == del_key)

  
delFromFM2 key elt size fm_l fm_r del_key True mkBalBranch key elt fm_l (delFromFM fm_r del_key)
delFromFM2 key elt size fm_l fm_r del_key False delFromFM1 key elt size fm_l fm_r del_key (del_key < key)

  
delFromFM3 (Branch key elt size fm_l fm_rdel_key delFromFM2 key elt size fm_l fm_r del_key (del_key > key)

  
delFromFM4 EmptyFM del_key emptyFM
delFromFM4 www wwx delFromFM3 www wwx

  deleteMax :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMax (Branch key elt yv fm_l EmptyFMfm_l
deleteMax (Branch key elt yw fm_l fm_rmkBalBranch key elt fm_l (deleteMax fm_r)

  deleteMin :: Ord a => FiniteMap a b  ->  FiniteMap a b
deleteMin (Branch key elt vvz EmptyFM fm_rfm_r
deleteMin (Branch key elt vwu fm_l fm_rmkBalBranch key elt (deleteMin fm_l) fm_r

  emptyFM :: FiniteMap a b
emptyFM EmptyFM

  findMax :: FiniteMap b a  ->  (b,a)
findMax (Branch key elt vvv vvw EmptyFM(key,elt)
findMax (Branch key elt vvx vvy fm_rfindMax fm_r

  findMin :: FiniteMap b a  ->  (b,a)
findMin (Branch key elt wz EmptyFM xu(key,elt)
findMin (Branch key elt xv fm_l xwfindMin fm_l

  fmToList :: FiniteMap b a  ->  [(b,a)]
fmToList fm foldFM fmToList0 [] fm

  
fmToList0 key elt rest (key,elt: rest

  foldFM :: (b  ->  c  ->  a  ->  a ->  a  ->  FiniteMap b c  ->  a
foldFM k z EmptyFM z
foldFM k z (Branch key elt wy fm_l fm_rfoldFM k (k key elt (foldFM k z fm_r)) fm_l

  glueBal :: Ord b => FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
glueBal EmptyFM fm2 glueBal4 EmptyFM fm2
glueBal fm1 EmptyFM glueBal3 fm1 EmptyFM
glueBal fm1 fm2 glueBal2 fm1 fm2

  
glueBal2 fm1 fm2 glueBal2GlueBal1 fm1 fm2 fm1 fm2 (sizeFM fm2 > sizeFM fm1)

  
glueBal2GlueBal0 xvv xvw fm1 fm2 True mkBalBranch (glueBal2Mid_key1 xvv xvw) (glueBal2Mid_elt1 xvv xvw) (deleteMax fm1) fm2

  
glueBal2GlueBal1 xvv xvw fm1 fm2 True mkBalBranch (glueBal2Mid_key2 xvv xvw) (glueBal2Mid_elt2 xvv xvw) fm1 (deleteMin fm2)
glueBal2GlueBal1 xvv xvw fm1 fm2 False glueBal2GlueBal0 xvv xvw fm1 fm2 otherwise

  
glueBal2Mid_elt1 xvv xvw glueBal2Mid_elt10 xvv xvw (glueBal2Vv2 xvv xvw)

  
glueBal2Mid_elt10 xvv xvw (vux,mid_elt1mid_elt1

  
glueBal2Mid_elt2 xvv xvw glueBal2Mid_elt20 xvv xvw (glueBal2Vv3 xvv xvw)

  
glueBal2Mid_elt20 xvv xvw (vuy,mid_elt2mid_elt2

  
glueBal2Mid_key1 xvv xvw glueBal2Mid_key10 xvv xvw (glueBal2Vv2 xvv xvw)

  
glueBal2Mid_key10 xvv xvw (mid_key1,vuzmid_key1

  
glueBal2Mid_key2 xvv xvw glueBal2Mid_key20 xvv xvw (glueBal2Vv3 xvv xvw)

  
glueBal2Mid_key20 xvv xvw (mid_key2,vvumid_key2

  
glueBal2Vv2 xvv xvw findMax xvv

  
glueBal2Vv3 xvv xvw findMin xvw

  
glueBal3 fm1 EmptyFM fm1
glueBal3 wvv wvw glueBal2 wvv wvw

  
glueBal4 EmptyFM fm2 fm2
glueBal4 wvy wvz glueBal3 wvy wvz

  mkBalBranch :: Ord a => a  ->  b  ->  FiniteMap a b  ->  FiniteMap a b  ->  FiniteMap a b
mkBalBranch key elt fm_L fm_R mkBalBranch6 key elt fm_L fm_R

  
mkBalBranch6 key elt fm_L fm_R mkBalBranch6MkBalBranch5 key elt fm_R fm_L key elt fm_L fm_R (mkBalBranch6Size_l key elt fm_R fm_L + mkBalBranch6Size_r key elt fm_R fm_L < Pos (Succ (Succ Zero)))

  
mkBalBranch6Double_L xux xuy xuz xvu fm_l (Branch key_r elt_r zx (Branch key_rl elt_rl zy fm_rll fm_rlr) fm_rrmkBranch (Pos (Succ (Succ (Succ (Succ (Succ Zero)))))) key_rl elt_rl (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) xux xuy fm_l fm_rll) (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))) key_r elt_r fm_rlr fm_rr)

  
mkBalBranch6Double_R xux xuy xuz xvu (Branch key_l elt_l yy fm_ll (Branch key_lr elt_lr yz fm_lrl fm_lrr)) fm_r mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))) key_lr elt_lr (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) key_l elt_l fm_ll fm_lrl) (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) xux xuy fm_lrr fm_r)

  
mkBalBranch6MkBalBranch0 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rrmkBalBranch6MkBalBranch02 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rr)

  
mkBalBranch6MkBalBranch00 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr True mkBalBranch6Double_L xux xuy xuz xvu fm_L fm_R

  
mkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr True mkBalBranch6Single_L xux xuy xuz xvu fm_L fm_R
mkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr False mkBalBranch6MkBalBranch00 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr otherwise

  
mkBalBranch6MkBalBranch02 xux xuy xuz xvu fm_L fm_R (Branch zz vuu vuv fm_rl fm_rrmkBalBranch6MkBalBranch01 xux xuy xuz xvu fm_L fm_R zz vuu vuv fm_rl fm_rr (sizeFM fm_rl < Pos (Succ (Succ Zero)) * sizeFM fm_rr)

  
mkBalBranch6MkBalBranch1 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lrmkBalBranch6MkBalBranch12 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lr)

  
mkBalBranch6MkBalBranch10 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr True mkBalBranch6Double_R xux xuy xuz xvu fm_L fm_R

  
mkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr True mkBalBranch6Single_R xux xuy xuz xvu fm_L fm_R
mkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr False mkBalBranch6MkBalBranch10 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr otherwise

  
mkBalBranch6MkBalBranch12 xux xuy xuz xvu fm_L fm_R (Branch zu zv zw fm_ll fm_lrmkBalBranch6MkBalBranch11 xux xuy xuz xvu fm_L fm_R zu zv zw fm_ll fm_lr (sizeFM fm_lr < Pos (Succ (Succ Zero)) * sizeFM fm_ll)

  
mkBalBranch6MkBalBranch2 xux xuy xuz xvu key elt fm_L fm_R True mkBranch (Pos (Succ (Succ Zero))) key elt fm_L fm_R

  
mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R True mkBalBranch6MkBalBranch1 xux xuy xuz xvu fm_L fm_R fm_L
mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R False mkBalBranch6MkBalBranch2 xux xuy xuz xvu key elt fm_L fm_R otherwise

  
mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R True mkBalBranch6MkBalBranch0 xux xuy xuz xvu fm_L fm_R fm_R
mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R False mkBalBranch6MkBalBranch3 xux xuy xuz xvu key elt fm_L fm_R (mkBalBranch6Size_l xux xuy xuz xvu > sIZE_RATIO * mkBalBranch6Size_r xux xuy xuz xvu)

  
mkBalBranch6MkBalBranch5 xux xuy xuz xvu key elt fm_L fm_R True mkBranch (Pos (Succ Zero)) key elt fm_L fm_R
mkBalBranch6MkBalBranch5 xux xuy xuz xvu key elt fm_L fm_R False mkBalBranch6MkBalBranch4 xux xuy xuz xvu key elt fm_L fm_R (mkBalBranch6Size_r xux xuy xuz xvu > sIZE_RATIO * mkBalBranch6Size_l xux xuy xuz xvu)

  
mkBalBranch6Single_L xux xuy xuz xvu fm_l (Branch key_r elt_r vuw fm_rl fm_rrmkBranch (Pos (Succ (Succ (Succ Zero)))) key_r elt_r (mkBranch (Pos (Succ (Succ (Succ (Succ Zero))))) xux xuy fm_l fm_rl) fm_rr

  
mkBalBranch6Single_R xux xuy xuz xvu (Branch key_l elt_l yx fm_ll fm_lrfm_r mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))) key_l elt_l fm_ll (mkBranch (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))) xux xuy fm_lr fm_r)

  
mkBalBranch6Size_l xux xuy xuz xvu sizeFM xvu

  
mkBalBranch6Size_r xux xuy xuz xvu sizeFM xuz

  mkBranch :: Ord b => Int  ->  b  ->  a  ->  FiniteMap b a  ->  FiniteMap b a  ->  FiniteMap b a
mkBranch which key elt fm_l fm_r mkBranchResult key elt fm_l fm_r

  
mkBranchBalance_ok wzw wzx wzy True

  
mkBranchLeft_ok wzw wzx wzy mkBranchLeft_ok0 wzw wzx wzy wzw wzx wzw

  
mkBranchLeft_ok0 wzw wzx wzy fm_l key EmptyFM True
mkBranchLeft_ok0 wzw wzx wzy fm_l key (Branch left_key vw vx vy vzmkBranchLeft_ok0Biggest_left_key fm_l < key

  
mkBranchLeft_ok0Biggest_left_key xvx fst (findMax xvx)

  
mkBranchLeft_size wzw wzx wzy sizeFM wzw

  
mkBranchResult wzz xuu xuv xuw Branch wzz xuu (mkBranchUnbox xuv wzz xuw (Pos (Succ Zero+ mkBranchLeft_size xuv wzz xuw + mkBranchRight_size xuv wzz xuw)) xuv xuw

  
mkBranchRight_ok wzw wzx wzy mkBranchRight_ok0 wzw wzx wzy wzy wzx wzy

  
mkBranchRight_ok0 wzw wzx wzy fm_r key EmptyFM True
mkBranchRight_ok0 wzw wzx wzy fm_r key (Branch right_key wu wv ww wxkey < mkBranchRight_ok0Smallest_right_key fm_r

  
mkBranchRight_ok0Smallest_right_key xvy fst (findMin xvy)

  
mkBranchRight_size wzw wzx wzy sizeFM wzy

  mkBranchUnbox :: Ord a =>  ->  (FiniteMap a b) ( ->  a ( ->  (FiniteMap a b) (Int  ->  Int)))
mkBranchUnbox wzw wzx wzy x x

  sIZE_RATIO :: Int
sIZE_RATIO Pos (Succ (Succ (Succ (Succ (Succ Zero)))))

  sizeFM :: FiniteMap a b  ->  Int
sizeFM EmptyFM Pos Zero
sizeFM (Branch xx xy size xz yusize


module Maybe where
  import qualified FiniteMap
import qualified Prelude



Haskell To QDPs


↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primEqNat(Succ(xwv4000), Succ(xwv30000)) → new_primEqNat(xwv4000, xwv30000)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_glueBal2Mid_key20(xwv272, xwv273, xwv274, xwv275, xwv276, xwv277, xwv278, xwv279, xwv280, xwv281, xwv282, xwv283, xwv284, Branch(xwv2850, xwv2851, xwv2852, xwv2853, xwv2854), xwv286, h, ba) → new_glueBal2Mid_key20(xwv272, xwv273, xwv274, xwv275, xwv276, xwv277, xwv278, xwv279, xwv280, xwv281, xwv2850, xwv2851, xwv2852, xwv2853, xwv2854, h, ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_glueBal2Mid_elt20(xwv256, xwv257, xwv258, xwv259, xwv260, xwv261, xwv262, xwv263, xwv264, xwv265, xwv266, xwv267, xwv268, Branch(xwv2690, xwv2691, xwv2692, xwv2693, xwv2694), xwv270, h, ba) → new_glueBal2Mid_elt20(xwv256, xwv257, xwv258, xwv259, xwv260, xwv261, xwv262, xwv263, xwv264, xwv265, xwv2690, xwv2691, xwv2692, xwv2693, xwv2694, h, ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_glueBal2Mid_key10(xwv335, xwv336, xwv337, xwv338, xwv339, xwv340, xwv341, xwv342, xwv343, xwv344, xwv345, xwv346, xwv347, xwv348, Branch(xwv3490, xwv3491, xwv3492, xwv3493, xwv3494), h, ba) → new_glueBal2Mid_key10(xwv335, xwv336, xwv337, xwv338, xwv339, xwv340, xwv341, xwv342, xwv343, xwv344, xwv3490, xwv3491, xwv3492, xwv3493, xwv3494, h, ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_glueBal2Mid_elt10(xwv319, xwv320, xwv321, xwv322, xwv323, xwv324, xwv325, xwv326, xwv327, xwv328, xwv329, xwv330, xwv331, xwv332, Branch(xwv3330, xwv3331, xwv3332, xwv3333, xwv3334), h, ba) → new_glueBal2Mid_elt10(xwv319, xwv320, xwv321, xwv322, xwv323, xwv324, xwv325, xwv326, xwv327, xwv328, xwv3330, xwv3331, xwv3332, xwv3333, xwv3334, h, ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primCmpNat(Succ(xwv44000), Succ(xwv46000)) → new_primCmpNat(xwv44000, xwv46000)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primMinusNat(Succ(xwv23800), Succ(xwv23900)) → new_primMinusNat(xwv23800, xwv23900)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primPlusNat(Succ(xwv19200), Succ(xwv9100)) → new_primPlusNat(xwv19200, xwv9100)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primMulNat(Succ(xwv40000), Succ(xwv300000)) → new_primMulNat(xwv40000, Succ(xwv300000))

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), baf, app(app(app(ty_@3, bbb), bbc), bbd)) → new_esEs1(xwv401, xwv3001, bbb, bbc, bbd)
new_esEs0(Left(xwv400), Left(xwv3000), app(ty_[], cb), cc) → new_esEs(xwv400, xwv3000, cb)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, app(app(ty_@2, hb), hc), gd) → new_esEs2(xwv401, xwv3001, hb, hc)
new_esEs0(Right(xwv400), Right(xwv3000), de, app(app(ty_@2, ed), ee)) → new_esEs2(xwv400, xwv3000, ed, ee)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, app(app(app(ty_@3, gg), gh), ha), gd) → new_esEs1(xwv401, xwv3001, gg, gh, ha)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), baf, app(app(ty_@2, bbe), bbf)) → new_esEs2(xwv401, xwv3001, bbe, bbf)
new_esEs3(Just(xwv400), Just(xwv3000), app(app(ty_Either, bdc), bdd)) → new_esEs0(xwv400, xwv3000, bdc, bdd)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), app(ty_Maybe, bda), bca) → new_esEs3(xwv400, xwv3000, bda)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, app(ty_Maybe, hd), gd) → new_esEs3(xwv401, xwv3001, hd)
new_esEs(:(xwv400, xwv401), :(xwv3000, xwv3001), app(app(ty_@2, bg), bh)) → new_esEs2(xwv400, xwv3000, bg, bh)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, eh, app(app(app(ty_@3, fd), ff), fg)) → new_esEs1(xwv402, xwv3002, fd, ff, fg)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), baf, app(ty_Maybe, bbg)) → new_esEs3(xwv401, xwv3001, bbg)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), app(app(ty_@2, bcg), bch), bca) → new_esEs2(xwv400, xwv3000, bcg, bch)
new_esEs0(Left(xwv400), Left(xwv3000), app(ty_Maybe, dd), cc) → new_esEs3(xwv400, xwv3000, dd)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), baf, app(app(ty_Either, bah), bba)) → new_esEs0(xwv401, xwv3001, bah, bba)
new_esEs0(Left(xwv400), Left(xwv3000), app(app(ty_Either, cd), ce), cc) → new_esEs0(xwv400, xwv3000, cd, ce)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), app(app(app(ty_@3, bcd), bce), bcf), bca) → new_esEs1(xwv400, xwv3000, bcd, bce, bcf)
new_esEs3(Just(xwv400), Just(xwv3000), app(app(ty_@2, bdh), bea)) → new_esEs2(xwv400, xwv3000, bdh, bea)
new_esEs0(Left(xwv400), Left(xwv3000), app(app(ty_@2, db), dc), cc) → new_esEs2(xwv400, xwv3000, db, dc)
new_esEs0(Right(xwv400), Right(xwv3000), de, app(app(ty_Either, dg), dh)) → new_esEs0(xwv400, xwv3000, dg, dh)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, eh, app(app(ty_@2, fh), ga)) → new_esEs2(xwv402, xwv3002, fh, ga)
new_esEs3(Just(xwv400), Just(xwv3000), app(app(app(ty_@3, bde), bdf), bdg)) → new_esEs1(xwv400, xwv3000, bde, bdf, bdg)
new_esEs3(Just(xwv400), Just(xwv3000), app(ty_[], bdb)) → new_esEs(xwv400, xwv3000, bdb)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), app(app(app(ty_@3, hh), baa), bab), eh, gd) → new_esEs1(xwv400, xwv3000, hh, baa, bab)
new_esEs(:(xwv400, xwv401), :(xwv3000, xwv3001), app(app(ty_Either, bb), bc)) → new_esEs0(xwv400, xwv3000, bb, bc)
new_esEs(:(xwv400, xwv401), :(xwv3000, xwv3001), h) → new_esEs(xwv401, xwv3001, h)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), app(app(ty_Either, hf), hg), eh, gd) → new_esEs0(xwv400, xwv3000, hf, hg)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), baf, app(ty_[], bag)) → new_esEs(xwv401, xwv3001, bag)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, eh, app(ty_Maybe, gb)) → new_esEs3(xwv402, xwv3002, gb)
new_esEs(:(xwv400, xwv401), :(xwv3000, xwv3001), app(app(app(ty_@3, bd), be), bf)) → new_esEs1(xwv400, xwv3000, bd, be, bf)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, app(app(ty_Either, ge), gf), gd) → new_esEs0(xwv401, xwv3001, ge, gf)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, eh, app(app(ty_Either, fb), fc)) → new_esEs0(xwv402, xwv3002, fb, fc)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), app(ty_Maybe, bae), eh, gd) → new_esEs3(xwv400, xwv3000, bae)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), app(ty_[], he), eh, gd) → new_esEs(xwv400, xwv3000, he)
new_esEs3(Just(xwv400), Just(xwv3000), app(ty_Maybe, beb)) → new_esEs3(xwv400, xwv3000, beb)
new_esEs(:(xwv400, xwv401), :(xwv3000, xwv3001), app(ty_Maybe, ca)) → new_esEs3(xwv400, xwv3000, ca)
new_esEs0(Right(xwv400), Right(xwv3000), de, app(ty_[], df)) → new_esEs(xwv400, xwv3000, df)
new_esEs0(Right(xwv400), Right(xwv3000), de, app(ty_Maybe, ef)) → new_esEs3(xwv400, xwv3000, ef)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), app(ty_[], bbh), bca) → new_esEs(xwv400, xwv3000, bbh)
new_esEs2(@2(xwv400, xwv401), @2(xwv3000, xwv3001), app(app(ty_Either, bcb), bcc), bca) → new_esEs0(xwv400, xwv3000, bcb, bcc)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), app(app(ty_@2, bac), bad), eh, gd) → new_esEs2(xwv400, xwv3000, bac, bad)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, eh, app(ty_[], fa)) → new_esEs(xwv402, xwv3002, fa)
new_esEs1(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), eg, app(ty_[], gc), gd) → new_esEs(xwv401, xwv3001, gc)
new_esEs(:(xwv400, xwv401), :(xwv3000, xwv3001), app(ty_[], ba)) → new_esEs(xwv400, xwv3000, ba)
new_esEs0(Left(xwv400), Left(xwv3000), app(app(app(ty_@3, cf), cg), da), cc) → new_esEs1(xwv400, xwv3000, cf, cg, da)
new_esEs0(Right(xwv400), Right(xwv3000), de, app(app(app(ty_@3, ea), eb), ec)) → new_esEs1(xwv400, xwv3000, ea, eb, ec)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, cf), app(ty_[], cg))) → new_ltEs(xwv4411, xwv4611, cg)
new_ltEs3(Left(xwv4410), Left(xwv4610), app(app(ty_Either, bdc), bdd), bcd) → new_ltEs3(xwv4410, xwv4610, bdc, bdd)
new_ltEs1(Just(xwv4410), Just(xwv4610), app(app(app(ty_@3, fh), ga), gb)) → new_ltEs2(xwv4410, xwv4610, fh, ga, gb)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), cf, app(ty_Maybe, dc)) → new_ltEs1(xwv4411, xwv4611, dc)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), app(app(ty_Either, fa), fb), eb) → new_lt3(xwv4410, xwv4610, fa, fb)
new_compare20(@2(xwv440, Just(xwv4410)), @2(xwv460, Just(xwv4610)), False, ce, app(ty_Maybe, app(app(ty_@2, fd), ff))) → new_ltEs0(xwv4410, xwv4610, fd, ff)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, gf, app(app(ty_Either, hf), hg)) → new_ltEs3(xwv4412, xwv4612, hf, hg)
new_compare20(@2(:(xwv4400, xwv4401), xwv441), @2(:(xwv4600, xwv4601), xwv461), False, app(ty_[], ba), beg) → new_primCompAux(xwv4400, xwv4600, new_compare0(xwv4401, xwv4601, ba), ba)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), app(app(app(ty_@3, ef), eg), eh), eb) → new_lt2(xwv4410, xwv4610, ef, eg, eh)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, app(app(app(ty_@3, bae), baf), bag), baa) → new_lt2(xwv4411, xwv4611, bae, baf, bag)
new_compare20(@2(xwv440, Just(xwv4410)), @2(xwv460, Just(xwv4610)), False, ce, app(ty_Maybe, app(ty_Maybe, fg))) → new_ltEs1(xwv4410, xwv4610, fg)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, app(app(ty_@2, ec), ed)), eb)) → new_lt0(xwv4410, xwv4610, ec, ed)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, app(app(ty_Either, fa), fb)), eb)) → new_lt3(xwv4410, xwv4610, fa, fb)
new_compare20(@2(xwv440, Right(xwv4410)), @2(xwv460, Right(xwv4610)), False, ce, app(app(ty_Either, bde), app(ty_Maybe, bea))) → new_ltEs1(xwv4410, xwv4610, bea)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, cf), app(app(ty_Either, dg), dh))) → new_ltEs3(xwv4411, xwv4611, dg, dh)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, app(ty_Maybe, bad), baa) → new_lt1(xwv4411, xwv4611, bad)
new_primCompAux(xwv4400, xwv4600, xwv130, app(ty_[], bb)) → new_compare(xwv4400, xwv4600, bb)
new_compare20(@2(xwv440, xwv441), @2(xwv460, xwv461), False, app(app(app(ty_@3, bfa), bfb), bfc), beg) → new_compare22(xwv440, xwv460, new_esEs6(xwv440, xwv460, bfa, bfb, bfc), bfa, bfb, bfc)
new_lt1(xwv440, xwv460, beh) → new_compare21(xwv440, xwv460, new_esEs5(xwv440, xwv460, beh), beh)
new_ltEs3(Left(xwv4410), Left(xwv4610), app(ty_Maybe, bcg), bcd) → new_ltEs1(xwv4410, xwv4610, bcg)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, gf, app(ty_Maybe, hb)) → new_ltEs1(xwv4412, xwv4612, hb)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, app(app(ty_@2, bab), bac), baa) → new_lt0(xwv4411, xwv4611, bab, bac)
new_ltEs1(Just(xwv4410), Just(xwv4610), app(ty_[], fc)) → new_ltEs(xwv4410, xwv4610, fc)
new_primCompAux(xwv4400, xwv4600, xwv130, app(ty_Maybe, be)) → new_compare2(xwv4400, xwv4600, be)
new_ltEs3(Right(xwv4410), Right(xwv4610), bde, app(app(ty_Either, bee), bef)) → new_ltEs3(xwv4410, xwv4610, bee, bef)
new_ltEs3(Right(xwv4410), Right(xwv4610), bde, app(ty_[], bdf)) → new_ltEs(xwv4410, xwv4610, bdf)
new_lt0(xwv440, xwv460, cc, cd) → new_compare20(xwv440, xwv460, new_esEs4(xwv440, xwv460, cc, cd), cc, cd)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, app(app(ty_Either, bca), bcb)), gf), baa)) → new_lt3(xwv4410, xwv4610, bca, bcb)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, app(app(app(ty_@3, bbf), bbg), bbh)), gf), baa)) → new_lt2(xwv4410, xwv4610, bbf, bbg, bbh)
new_compare20(@2(xwv440, Just(xwv4410)), @2(xwv460, Just(xwv4610)), False, ce, app(ty_Maybe, app(ty_[], fc))) → new_ltEs(xwv4410, xwv4610, fc)
new_compare23(xwv440, xwv460, False, bfd, bfe) → new_ltEs3(xwv440, xwv460, bfd, bfe)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), gf), app(app(ty_Either, hf), hg))) → new_ltEs3(xwv4412, xwv4612, hf, hg)
new_compare20(@2(xwv440, xwv441), @2(xwv460, xwv461), False, app(ty_Maybe, beh), beg) → new_compare21(xwv440, xwv460, new_esEs5(xwv440, xwv460, beh), beh)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, gf, app(ty_[], gg)) → new_ltEs(xwv4412, xwv4612, gg)
new_primCompAux(xwv4400, xwv4600, xwv130, app(app(app(ty_@3, bf), bg), bh)) → new_compare3(xwv4400, xwv4600, bf, bg, bh)
new_ltEs3(Left(xwv4410), Left(xwv4610), app(ty_[], bcc), bcd) → new_ltEs(xwv4410, xwv4610, bcc)
new_compare20(@2(xwv440, Left(xwv4410)), @2(xwv460, Left(xwv4610)), False, ce, app(app(ty_Either, app(app(app(ty_@3, bch), bda), bdb)), bcd)) → new_ltEs2(xwv4410, xwv4610, bch, bda, bdb)
new_ltEs3(Left(xwv4410), Left(xwv4610), app(app(app(ty_@3, bch), bda), bdb), bcd) → new_ltEs2(xwv4410, xwv4610, bch, bda, bdb)
new_compare20(@2(:(xwv4400, xwv4401), xwv441), @2(:(xwv4600, xwv4601), xwv461), False, app(ty_[], ba), beg) → new_compare(xwv4401, xwv4601, ba)
new_ltEs(xwv441, xwv461, h) → new_compare(xwv441, xwv461, h)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), app(app(ty_Either, bah), bba)), baa)) → new_lt3(xwv4411, xwv4611, bah, bba)
new_ltEs3(Right(xwv4410), Right(xwv4610), bde, app(ty_Maybe, bea)) → new_ltEs1(xwv4410, xwv4610, bea)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), app(ty_[], hh)), baa)) → new_lt(xwv4411, xwv4611, hh)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, app(ty_Maybe, ee)), eb)) → new_lt1(xwv4410, xwv4610, ee)
new_compare20(@2(xwv440, xwv441), @2(xwv460, xwv461), False, app(app(ty_@2, cc), cd), beg) → new_compare20(xwv440, xwv460, new_esEs4(xwv440, xwv460, cc, cd), cc, cd)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, cf), app(app(app(ty_@3, dd), de), df))) → new_ltEs2(xwv4411, xwv4611, dd, de, df)
new_compare1(xwv440, xwv460, cc, cd) → new_compare20(xwv440, xwv460, new_esEs4(xwv440, xwv460, cc, cd), cc, cd)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), app(ty_Maybe, ee), eb) → new_lt1(xwv4410, xwv4610, ee)
new_primCompAux(xwv4400, xwv4600, xwv130, app(app(ty_@2, bc), bd)) → new_compare1(xwv4400, xwv4600, bc, bd)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), app(ty_Maybe, bbe), gf, baa) → new_lt1(xwv4410, xwv4610, bbe)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), app(app(ty_@2, bbc), bbd), gf, baa) → new_lt0(xwv4410, xwv4610, bbc, bbd)
new_compare22(xwv440, xwv460, False, bfa, bfb, bfc) → new_ltEs2(xwv440, xwv460, bfa, bfb, bfc)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, app(app(ty_@2, bbc), bbd)), gf), baa)) → new_lt0(xwv4410, xwv4610, bbc, bbd)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), app(ty_[], bbb), gf, baa) → new_lt(xwv4410, xwv4610, bbb)
new_ltEs1(Just(xwv4410), Just(xwv4610), app(app(ty_Either, gc), gd)) → new_ltEs3(xwv4410, xwv4610, gc, gd)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), app(app(ty_@2, bab), bac)), baa)) → new_lt0(xwv4411, xwv4611, bab, bac)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), cf, app(app(ty_Either, dg), dh)) → new_ltEs3(xwv4411, xwv4611, dg, dh)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), app(app(ty_@2, ec), ed), eb) → new_lt0(xwv4410, xwv4610, ec, ed)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, cf), app(ty_Maybe, dc))) → new_ltEs1(xwv4411, xwv4611, dc)
new_lt(:(xwv4400, xwv4401), :(xwv4600, xwv4601), ba) → new_primCompAux(xwv4400, xwv4600, new_compare0(xwv4401, xwv4601, ba), ba)
new_ltEs3(Right(xwv4410), Right(xwv4610), bde, app(app(app(ty_@3, beb), bec), bed)) → new_ltEs2(xwv4410, xwv4610, beb, bec, bed)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, gf, app(app(app(ty_@3, hc), hd), he)) → new_ltEs2(xwv4412, xwv4612, hc, hd, he)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, cf), app(app(ty_@2, da), db))) → new_ltEs0(xwv4411, xwv4611, da, db)
new_compare20(@2(xwv440, Left(xwv4410)), @2(xwv460, Left(xwv4610)), False, ce, app(app(ty_Either, app(ty_Maybe, bcg)), bcd)) → new_ltEs1(xwv4410, xwv4610, bcg)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, app(ty_Maybe, bbe)), gf), baa)) → new_lt1(xwv4410, xwv4610, bbe)
new_compare20(@2(xwv440, Right(xwv4410)), @2(xwv460, Right(xwv4610)), False, ce, app(app(ty_Either, bde), app(app(app(ty_@3, beb), bec), bed))) → new_ltEs2(xwv4410, xwv4610, beb, bec, bed)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), gf), app(ty_Maybe, hb))) → new_ltEs1(xwv4412, xwv4612, hb)
new_compare20(@2(xwv440, Right(xwv4410)), @2(xwv460, Right(xwv4610)), False, ce, app(app(ty_Either, bde), app(app(ty_Either, bee), bef))) → new_ltEs3(xwv4410, xwv4610, bee, bef)
new_ltEs1(Just(xwv4410), Just(xwv4610), app(ty_Maybe, fg)) → new_ltEs1(xwv4410, xwv4610, fg)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), app(ty_Maybe, bad)), baa)) → new_lt1(xwv4411, xwv4611, bad)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), app(app(ty_Either, bca), bcb), gf, baa) → new_lt3(xwv4410, xwv4610, bca, bcb)
new_lt(:(xwv4400, xwv4401), :(xwv4600, xwv4601), ba) → new_compare(xwv4401, xwv4601, ba)
new_compare3(xwv440, xwv460, bfa, bfb, bfc) → new_compare22(xwv440, xwv460, new_esEs6(xwv440, xwv460, bfa, bfb, bfc), bfa, bfb, bfc)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), gf), app(ty_[], gg))) → new_ltEs(xwv4412, xwv4612, gg)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), gf), app(app(ty_@2, gh), ha))) → new_ltEs0(xwv4412, xwv4612, gh, ha)
new_lt3(xwv440, xwv460, bfd, bfe) → new_compare23(xwv440, xwv460, new_esEs7(xwv440, xwv460, bfd, bfe), bfd, bfe)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, app(ty_[], hh), baa) → new_lt(xwv4411, xwv4611, hh)
new_compare20(@2(xwv440, Just(xwv4410)), @2(xwv460, Just(xwv4610)), False, ce, app(ty_Maybe, app(app(ty_Either, gc), gd))) → new_ltEs3(xwv4410, xwv4610, gc, gd)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), cf, app(app(app(ty_@3, dd), de), df)) → new_ltEs2(xwv4411, xwv4611, dd, de, df)
new_primCompAux(xwv4400, xwv4600, xwv130, app(app(ty_Either, ca), cb)) → new_compare4(xwv4400, xwv4600, ca, cb)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), app(app(app(ty_@3, bae), baf), bag)), baa)) → new_lt2(xwv4411, xwv4611, bae, baf, bag)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), cf, app(app(ty_@2, da), db)) → new_ltEs0(xwv4411, xwv4611, da, db)
new_lt2(xwv440, xwv460, bfa, bfb, bfc) → new_compare22(xwv440, xwv460, new_esEs6(xwv440, xwv460, bfa, bfb, bfc), bfa, bfb, bfc)
new_compare20(@2(xwv440, Left(xwv4410)), @2(xwv460, Left(xwv4610)), False, ce, app(app(ty_Either, app(app(ty_Either, bdc), bdd)), bcd)) → new_ltEs3(xwv4410, xwv4610, bdc, bdd)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), cf, app(ty_[], cg)) → new_ltEs(xwv4411, xwv4611, cg)
new_compare20(@2(xwv440, Right(xwv4410)), @2(xwv460, Right(xwv4610)), False, ce, app(app(ty_Either, bde), app(ty_[], bdf))) → new_ltEs(xwv4410, xwv4610, bdf)
new_ltEs3(Left(xwv4410), Left(xwv4610), app(app(ty_@2, bce), bcf), bcd) → new_ltEs0(xwv4410, xwv4610, bce, bcf)
new_compare20(@2(xwv440, Left(xwv4410)), @2(xwv460, Left(xwv4610)), False, ce, app(app(ty_Either, app(app(ty_@2, bce), bcf)), bcd)) → new_ltEs0(xwv4410, xwv4610, bce, bcf)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, app(ty_[], ea)), eb)) → new_lt(xwv4410, xwv4610, ea)
new_ltEs0(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), app(ty_[], ea), eb) → new_lt(xwv4410, xwv4610, ea)
new_ltEs1(Just(xwv4410), Just(xwv4610), app(app(ty_@2, fd), ff)) → new_ltEs0(xwv4410, xwv4610, fd, ff)
new_compare20(@2(xwv440, Left(xwv4410)), @2(xwv460, Left(xwv4610)), False, ce, app(app(ty_Either, app(ty_[], bcc)), bcd)) → new_ltEs(xwv4410, xwv4610, bcc)
new_compare(:(xwv4400, xwv4401), :(xwv4600, xwv4601), ba) → new_compare(xwv4401, xwv4601, ba)
new_compare(:(xwv4400, xwv4401), :(xwv4600, xwv4601), ba) → new_primCompAux(xwv4400, xwv4600, new_compare0(xwv4401, xwv4601, ba), ba)
new_compare20(@2(xwv440, Right(xwv4410)), @2(xwv460, Right(xwv4610)), False, ce, app(app(ty_Either, bde), app(app(ty_@2, bdg), bdh))) → new_ltEs0(xwv4410, xwv4610, bdg, bdh)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, app(ty_[], bbb)), gf), baa)) → new_lt(xwv4410, xwv4610, bbb)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), app(app(app(ty_@3, bbf), bbg), bbh), gf, baa) → new_lt2(xwv4410, xwv4610, bbf, bbg, bbh)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, gf, app(app(ty_@2, gh), ha)) → new_ltEs0(xwv4412, xwv4612, gh, ha)
new_compare20(@2(xwv440, xwv441), @2(xwv460, xwv461), False, app(app(ty_Either, bfd), bfe), beg) → new_compare23(xwv440, xwv460, new_esEs7(xwv440, xwv460, bfd, bfe), bfd, bfe)
new_ltEs2(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, app(app(ty_Either, bah), bba), baa) → new_lt3(xwv4411, xwv4611, bah, bba)
new_ltEs3(Right(xwv4410), Right(xwv4610), bde, app(app(ty_@2, bdg), bdh)) → new_ltEs0(xwv4410, xwv4610, bdg, bdh)
new_compare20(@2(xwv440, @3(xwv4410, xwv4411, xwv4412)), @2(xwv460, @3(xwv4610, xwv4611, xwv4612)), False, ce, app(app(app(ty_@3, ge), gf), app(app(app(ty_@3, hc), hd), he))) → new_ltEs2(xwv4412, xwv4612, hc, hd, he)
new_compare2(xwv440, xwv460, beh) → new_compare21(xwv440, xwv460, new_esEs5(xwv440, xwv460, beh), beh)
new_compare4(xwv440, xwv460, bfd, bfe) → new_compare23(xwv440, xwv460, new_esEs7(xwv440, xwv460, bfd, bfe), bfd, bfe)
new_compare20(@2(xwv440, Just(xwv4410)), @2(xwv460, Just(xwv4610)), False, ce, app(ty_Maybe, app(app(app(ty_@3, fh), ga), gb))) → new_ltEs2(xwv4410, xwv4610, fh, ga, gb)
new_compare21(xwv440, xwv460, False, beh) → new_ltEs1(xwv440, xwv460, beh)
new_compare20(@2(xwv440, xwv441), @2(xwv460, xwv461), False, ce, app(ty_[], h)) → new_compare(xwv441, xwv461, h)
new_compare20(@2(xwv440, @2(xwv4410, xwv4411)), @2(xwv460, @2(xwv4610, xwv4611)), False, ce, app(app(ty_@2, app(app(app(ty_@3, ef), eg), eh)), eb)) → new_lt2(xwv4410, xwv4610, ef, eg, eh)

The TRS R consists of the following rules:

new_esEs28(xwv401, xwv3001, ty_Integer) → new_esEs17(xwv401, xwv3001)
new_esEs29(xwv400, xwv3000, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_compare9(xwv4400, xwv4600, ty_Double) → new_compare19(xwv4400, xwv4600)
new_esEs23(xwv4410, xwv4610, app(app(ty_Either, bca), bcb)) → new_esEs7(xwv4410, xwv4610, bca, bcb)
new_esEs29(xwv400, xwv3000, ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs7(Left(xwv400), Left(xwv3000), app(app(ty_Either, cbg), cbh), cbd) → new_esEs7(xwv400, xwv3000, cbg, cbh)
new_ltEs7(xwv441, xwv461) → new_fsEs(new_compare12(xwv441, xwv461))
new_compare18(xwv440, xwv460, bfd, bfe) → new_compare28(xwv440, xwv460, new_esEs7(xwv440, xwv460, bfd, bfe), bfd, bfe)
new_ltEs17(False, False) → True
new_esEs5(Just(xwv400), Just(xwv3000), ty_Integer) → new_esEs17(xwv400, xwv3000)
new_compare9(xwv4400, xwv4600, ty_Bool) → new_compare25(xwv4400, xwv4600)
new_lt15(xwv440, xwv460, bfa, bfb, bfc) → new_esEs12(new_compare17(xwv440, xwv460, bfa, bfb, bfc), LT)
new_ltEs19(xwv4412, xwv4612, app(ty_[], gg)) → new_ltEs9(xwv4412, xwv4612, gg)
new_compare5(:%(xwv4400, xwv4401), :%(xwv4600, xwv4601), ty_Int) → new_compare7(new_sr0(xwv4400, xwv4601), new_sr0(xwv4600, xwv4401))
new_esEs29(xwv400, xwv3000, ty_@0) → new_esEs13(xwv400, xwv3000)
new_esEs23(xwv4410, xwv4610, app(app(ty_@2, bbc), bbd)) → new_esEs4(xwv4410, xwv4610, bbc, bbd)
new_esEs29(xwv400, xwv3000, ty_Double) → new_esEs14(xwv400, xwv3000)
new_esEs26(xwv400, xwv3000, ty_Double) → new_esEs14(xwv400, xwv3000)
new_ltEs20(xwv4411, xwv4611, ty_Int) → new_ltEs4(xwv4411, xwv4611)
new_esEs24(xwv402, xwv3002, ty_Char) → new_esEs9(xwv402, xwv3002)
new_compare110(xwv104, xwv105, xwv106, xwv107, True, xwv109, ceb, cec) → new_compare112(xwv104, xwv105, xwv106, xwv107, True, ceb, cec)
new_esEs19(xwv440, xwv460, ty_Float) → new_esEs15(xwv440, xwv460)
new_lt20(xwv4410, xwv4610, ty_Float) → new_lt14(xwv4410, xwv4610)
new_lt19(xwv4411, xwv4611, ty_Integer) → new_lt5(xwv4411, xwv4611)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Ordering, bcd) → new_ltEs8(xwv4410, xwv4610)
new_lt19(xwv4411, xwv4611, app(ty_Ratio, cee)) → new_lt9(xwv4411, xwv4611, cee)
new_esEs29(xwv400, xwv3000, ty_Bool) → new_esEs8(xwv400, xwv3000)
new_compare112(xwv104, xwv105, xwv106, xwv107, True, ceb, cec) → LT
new_primMulNat0(Zero, Zero) → Zero
new_esEs5(Just(xwv400), Just(xwv3000), ty_Double) → new_esEs14(xwv400, xwv3000)
new_esEs26(xwv400, xwv3000, ty_Float) → new_esEs15(xwv400, xwv3000)
new_lt20(xwv4410, xwv4610, app(ty_[], bbb)) → new_lt8(xwv4410, xwv4610, bbb)
new_esEs24(xwv402, xwv3002, ty_@0) → new_esEs13(xwv402, xwv3002)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, ty_Double) → new_esEs14(xwv400, xwv3000)
new_sr(Integer(xwv46000), Integer(xwv44010)) → Integer(new_primMulInt(xwv46000, xwv44010))
new_esEs7(Left(xwv400), Left(xwv3000), ty_Double, cbd) → new_esEs14(xwv400, xwv3000)
new_ltEs20(xwv4411, xwv4611, ty_@0) → new_ltEs11(xwv4411, xwv4611)
new_esEs25(xwv401, xwv3001, app(app(ty_@2, chc), chd)) → new_esEs4(xwv401, xwv3001, chc, chd)
new_esEs22(xwv4411, xwv4611, ty_Char) → new_esEs9(xwv4411, xwv4611)
new_esEs18(xwv400, xwv3000, ty_Char) → new_esEs9(xwv400, xwv3000)
new_lt4(xwv440, xwv460, ty_Char) → new_lt6(xwv440, xwv460)
new_lt20(xwv4410, xwv4610, app(ty_Maybe, bbe)) → new_lt13(xwv4410, xwv4610, bbe)
new_ltEs18(xwv441, xwv461, ty_Integer) → new_ltEs6(xwv441, xwv461)
new_lt20(xwv4410, xwv4610, app(app(ty_@2, bbc), bbd)) → new_lt11(xwv4410, xwv4610, bbc, bbd)
new_fsEs(xwv117) → new_not(new_esEs12(xwv117, GT))
new_ltEs18(xwv441, xwv461, app(ty_[], h)) → new_ltEs9(xwv441, xwv461, h)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, app(ty_[], cch)) → new_esEs10(xwv400, xwv3000, cch)
new_compare9(xwv4400, xwv4600, ty_Integer) → new_compare6(xwv4400, xwv4600)
new_esEs18(xwv400, xwv3000, ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_esEs12(GT, LT) → False
new_esEs12(LT, GT) → False
new_compare16(xwv440, xwv460, beh) → new_compare24(xwv440, xwv460, new_esEs5(xwv440, xwv460, beh), beh)
new_esEs23(xwv4410, xwv4610, ty_@0) → new_esEs13(xwv4410, xwv4610)
new_esEs15(Float(xwv400, xwv401), Float(xwv3000, xwv3001)) → new_esEs16(new_sr0(xwv400, xwv3000), new_sr0(xwv401, xwv3001))
new_esEs26(xwv400, xwv3000, app(ty_[], chf)) → new_esEs10(xwv400, xwv3000, chf)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(ty_[], fc)) → new_ltEs9(xwv4410, xwv4610, fc)
new_ltEs20(xwv4411, xwv4611, app(ty_[], cg)) → new_ltEs9(xwv4411, xwv4611, cg)
new_compare12(Char(xwv4400), Char(xwv4600)) → new_primCmpNat0(xwv4400, xwv4600)
new_ltEs20(xwv4411, xwv4611, app(app(ty_@2, da), db)) → new_ltEs12(xwv4411, xwv4611, da, db)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, app(ty_Ratio, cda)) → new_esEs11(xwv400, xwv3000, cda)
new_compare0(:(xwv4400, xwv4401), :(xwv4600, xwv4601), ba) → new_primCompAux0(xwv4400, xwv4600, new_compare0(xwv4401, xwv4601, ba), ba)
new_lt19(xwv4411, xwv4611, ty_Int) → new_lt12(xwv4411, xwv4611)
new_esEs5(Just(xwv400), Just(xwv3000), app(ty_Maybe, bgh)) → new_esEs5(xwv400, xwv3000, bgh)
new_ltEs8(EQ, EQ) → True
new_esEs25(xwv401, xwv3001, ty_Integer) → new_esEs17(xwv401, xwv3001)
new_ltEs18(xwv441, xwv461, ty_Int) → new_ltEs4(xwv441, xwv461)
new_esEs25(xwv401, xwv3001, ty_Double) → new_esEs14(xwv401, xwv3001)
new_esEs5(Just(xwv400), Just(xwv3000), ty_Char) → new_esEs9(xwv400, xwv3000)
new_esEs28(xwv401, xwv3001, ty_Double) → new_esEs14(xwv401, xwv3001)
new_lt10(xwv440, xwv460) → new_esEs12(new_compare14(xwv440, xwv460), LT)
new_esEs27(xwv4410, xwv4610, ty_Double) → new_esEs14(xwv4410, xwv4610)
new_esEs22(xwv4411, xwv4611, app(app(ty_Either, bah), bba)) → new_esEs7(xwv4411, xwv4611, bah, bba)
new_lt5(xwv440, xwv460) → new_esEs12(new_compare6(xwv440, xwv460), LT)
new_esEs17(Integer(xwv400), Integer(xwv3000)) → new_primEqInt(xwv400, xwv3000)
new_lt18(xwv440, xwv460) → new_esEs12(new_compare25(xwv440, xwv460), LT)
new_esEs22(xwv4411, xwv4611, ty_Ordering) → new_esEs12(xwv4411, xwv4611)
new_esEs25(xwv401, xwv3001, app(ty_[], cgd)) → new_esEs10(xwv401, xwv3001, cgd)
new_compare9(xwv4400, xwv4600, app(ty_Maybe, be)) → new_compare16(xwv4400, xwv4600, be)
new_pePe(False, xwv129) → xwv129
new_ltEs15(Left(xwv4410), Left(xwv4610), app(app(app(ty_@3, bch), bda), bdb), bcd) → new_ltEs14(xwv4410, xwv4610, bch, bda, bdb)
new_esEs19(xwv440, xwv460, app(ty_[], ba)) → new_esEs10(xwv440, xwv460, ba)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, ty_@0) → new_ltEs11(xwv4410, xwv4610)
new_esEs7(Right(xwv400), Left(xwv3000), ccg, cbd) → False
new_esEs7(Left(xwv400), Right(xwv3000), ccg, cbd) → False
new_esEs7(Left(xwv400), Left(xwv3000), app(ty_[], cbe), cbd) → new_esEs10(xwv400, xwv3000, cbe)
new_lt6(xwv440, xwv460) → new_esEs12(new_compare12(xwv440, xwv460), LT)
new_compare19(Double(xwv4400, xwv4401), Double(xwv4600, xwv4601)) → new_compare7(new_sr0(xwv4400, xwv4600), new_sr0(xwv4401, xwv4601))
new_lt21(xwv4410, xwv4610, app(ty_[], ea)) → new_lt8(xwv4410, xwv4610, ea)
new_esEs27(xwv4410, xwv4610, app(app(ty_Either, fa), fb)) → new_esEs7(xwv4410, xwv4610, fa, fb)
new_esEs20(xwv401, xwv3001, ty_Int) → new_esEs16(xwv401, xwv3001)
new_lt19(xwv4411, xwv4611, app(ty_[], hh)) → new_lt8(xwv4411, xwv4611, hh)
new_esEs29(xwv400, xwv3000, ty_Float) → new_esEs15(xwv400, xwv3000)
new_esEs28(xwv401, xwv3001, ty_@0) → new_esEs13(xwv401, xwv3001)
new_esEs26(xwv400, xwv3000, ty_@0) → new_esEs13(xwv400, xwv3000)
new_esEs22(xwv4411, xwv4611, app(app(ty_@2, bab), bac)) → new_esEs4(xwv4411, xwv4611, bab, bac)
new_compare14(@0, @0) → EQ
new_esEs6(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), ceg, ceh, cfa) → new_asAs(new_esEs26(xwv400, xwv3000, ceg), new_asAs(new_esEs25(xwv401, xwv3001, ceh), new_esEs24(xwv402, xwv3002, cfa)))
new_ltEs19(xwv4412, xwv4612, ty_Integer) → new_ltEs6(xwv4412, xwv4612)
new_ltEs20(xwv4411, xwv4611, ty_Ordering) → new_ltEs8(xwv4411, xwv4611)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Integer) → new_ltEs6(xwv4410, xwv4610)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, ty_Bool) → new_esEs8(xwv400, xwv3000)
new_ltEs8(EQ, GT) → True
new_esEs19(xwv440, xwv460, app(app(ty_Either, bfd), bfe)) → new_esEs7(xwv440, xwv460, bfd, bfe)
new_ltEs8(GT, GT) → True
new_primCmpInt(Neg(Succ(xwv4400)), Neg(Succ(xwv4600))) → new_primCmpNat0(xwv4600, xwv4400)
new_compare111(xwv440, xwv460, False) → GT
new_compare111(xwv440, xwv460, True) → LT
new_esEs20(xwv401, xwv3001, ty_Integer) → new_esEs17(xwv401, xwv3001)
new_esEs29(xwv400, xwv3000, app(app(ty_@2, dde), ddf)) → new_esEs4(xwv400, xwv3000, dde, ddf)
new_ltEs18(xwv441, xwv461, ty_@0) → new_ltEs11(xwv441, xwv461)
new_esEs23(xwv4410, xwv4610, ty_Double) → new_esEs14(xwv4410, xwv4610)
new_primCmpNat0(Zero, Succ(xwv46000)) → LT
new_esEs22(xwv4411, xwv4611, ty_Float) → new_esEs15(xwv4411, xwv4611)
new_lt4(xwv440, xwv460, app(ty_[], ba)) → new_lt8(xwv440, xwv460, ba)
new_lt7(xwv440, xwv460) → new_esEs12(new_compare13(xwv440, xwv460), LT)
new_lt4(xwv440, xwv460, ty_@0) → new_lt10(xwv440, xwv460)
new_compare9(xwv4400, xwv4600, app(app(ty_@2, bc), bd)) → new_compare15(xwv4400, xwv4600, bc, bd)
new_compare110(xwv104, xwv105, xwv106, xwv107, False, xwv109, ceb, cec) → new_compare112(xwv104, xwv105, xwv106, xwv107, xwv109, ceb, cec)
new_compare114(xwv440, xwv460, False, bfa, bfb, bfc) → GT
new_esEs18(xwv400, xwv3000, ty_@0) → new_esEs13(xwv400, xwv3000)
new_esEs27(xwv4410, xwv4610, ty_Bool) → new_esEs8(xwv4410, xwv4610)
new_esEs24(xwv402, xwv3002, ty_Bool) → new_esEs8(xwv402, xwv3002)
new_lt20(xwv4410, xwv4610, app(ty_Ratio, cef)) → new_lt9(xwv4410, xwv4610, cef)
new_ltEs8(LT, EQ) → True
new_lt21(xwv4410, xwv4610, app(ty_Ratio, dba)) → new_lt9(xwv4410, xwv4610, dba)
new_esEs11(:%(xwv400, xwv401), :%(xwv3000, xwv3001), cba) → new_asAs(new_esEs21(xwv400, xwv3000, cba), new_esEs20(xwv401, xwv3001, cba))
new_ltEs18(xwv441, xwv461, app(ty_Maybe, cad)) → new_ltEs5(xwv441, xwv461, cad)
new_esEs12(LT, LT) → True
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, ty_Bool) → new_ltEs17(xwv4410, xwv4610)
new_esEs7(Left(xwv400), Left(xwv3000), app(ty_Ratio, cbf), cbd) → new_esEs11(xwv400, xwv3000, cbf)
new_esEs24(xwv402, xwv3002, app(app(ty_Either, cfd), cfe)) → new_esEs7(xwv402, xwv3002, cfd, cfe)
new_esEs23(xwv4410, xwv4610, ty_Bool) → new_esEs8(xwv4410, xwv4610)
new_compare9(xwv4400, xwv4600, app(ty_Ratio, caf)) → new_compare5(xwv4400, xwv4600, caf)
new_lt19(xwv4411, xwv4611, app(app(ty_@2, bab), bac)) → new_lt11(xwv4411, xwv4611, bab, bac)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, ty_Float) → new_esEs15(xwv400, xwv3000)
new_pePe(True, xwv129) → True
new_compare0([], [], ba) → EQ
new_esEs24(xwv402, xwv3002, ty_Int) → new_esEs16(xwv402, xwv3002)
new_primEqNat0(Zero, Zero) → True
new_esEs7(Right(xwv400), Right(xwv3000), ccg, ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, app(ty_Ratio, cbc)) → new_ltEs10(xwv4410, xwv4610, cbc)
new_compare8(Float(xwv4400, xwv4401), Float(xwv4600, xwv4601)) → new_compare7(new_sr0(xwv4400, xwv4600), new_sr0(xwv4401, xwv4601))
new_compare11(xwv440, xwv460, True, beh) → LT
new_lt21(xwv4410, xwv4610, app(app(ty_Either, fa), fb)) → new_lt16(xwv4410, xwv4610, fa, fb)
new_primMulNat0(Succ(xwv40000), Succ(xwv300000)) → new_primPlusNat1(new_primMulNat0(xwv40000, Succ(xwv300000)), xwv300000)
new_esEs5(Just(xwv400), Just(xwv3000), app(app(ty_@2, bgf), bgg)) → new_esEs4(xwv400, xwv3000, bgf, bgg)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, ty_Integer) → new_ltEs6(xwv4410, xwv4610)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, ty_Char) → new_ltEs7(xwv4410, xwv4610)
new_lt4(xwv440, xwv460, app(ty_Ratio, cah)) → new_lt9(xwv440, xwv460, cah)
new_esEs18(xwv400, xwv3000, ty_Float) → new_esEs15(xwv400, xwv3000)
new_compare9(xwv4400, xwv4600, app(app(app(ty_@3, bf), bg), bh)) → new_compare17(xwv4400, xwv4600, bf, bg, bh)
new_ltEs8(GT, EQ) → False
new_ltEs8(EQ, LT) → False
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, app(app(app(ty_@3, beb), bec), bed)) → new_ltEs14(xwv4410, xwv4610, beb, bec, bed)
new_compare9(xwv4400, xwv4600, app(app(ty_Either, ca), cb)) → new_compare18(xwv4400, xwv4600, ca, cb)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, app(app(app(ty_@3, cdd), cde), cdf)) → new_esEs6(xwv400, xwv3000, cdd, cde, cdf)
new_ltEs20(xwv4411, xwv4611, app(app(app(ty_@3, dd), de), df)) → new_ltEs14(xwv4411, xwv4611, dd, de, df)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(app(ty_Either, gc), gd)) → new_ltEs15(xwv4410, xwv4610, gc, gd)
new_compare7(xwv44, xwv46) → new_primCmpInt(xwv44, xwv46)
new_esEs8(False, True) → False
new_esEs8(True, False) → False
new_compare114(xwv440, xwv460, True, bfa, bfb, bfc) → LT
new_esEs18(xwv400, xwv3000, app(app(app(ty_@3, bhf), bhg), bhh)) → new_esEs6(xwv400, xwv3000, bhf, bhg, bhh)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, app(app(ty_Either, cdb), cdc)) → new_esEs7(xwv400, xwv3000, cdb, cdc)
new_lt20(xwv4410, xwv4610, ty_Double) → new_lt17(xwv4410, xwv4610)
new_esEs26(xwv400, xwv3000, app(app(app(ty_@3, dab), dac), dad)) → new_esEs6(xwv400, xwv3000, dab, dac, dad)
new_lt19(xwv4411, xwv4611, app(app(app(ty_@3, bae), baf), bag)) → new_lt15(xwv4411, xwv4611, bae, baf, bag)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(app(ty_@2, fd), ff)) → new_ltEs12(xwv4410, xwv4610, fd, ff)
new_compare29(xwv440, xwv460, True, bfa, bfb, bfc) → EQ
new_esEs25(xwv401, xwv3001, ty_Ordering) → new_esEs12(xwv401, xwv3001)
new_lt4(xwv440, xwv460, ty_Float) → new_lt14(xwv440, xwv460)
new_primEqInt(Neg(Succ(xwv4000)), Neg(Succ(xwv30000))) → new_primEqNat0(xwv4000, xwv30000)
new_esEs24(xwv402, xwv3002, app(ty_Ratio, cfc)) → new_esEs11(xwv402, xwv3002, cfc)
new_ltEs19(xwv4412, xwv4612, ty_Ordering) → new_ltEs8(xwv4412, xwv4612)
new_ltEs18(xwv441, xwv461, app(ty_Ratio, cag)) → new_ltEs10(xwv441, xwv461, cag)
new_esEs22(xwv4411, xwv4611, app(app(app(ty_@3, bae), baf), bag)) → new_esEs6(xwv4411, xwv4611, bae, baf, bag)
new_compare113(xwv440, xwv460, True, bfd, bfe) → LT
new_ltEs5(Just(xwv4410), Nothing, cad) → False
new_lt20(xwv4410, xwv4610, ty_Char) → new_lt6(xwv4410, xwv4610)
new_esEs16(xwv40, xwv300) → new_primEqInt(xwv40, xwv300)
new_ltEs17(True, False) → False
new_ltEs16(xwv441, xwv461) → new_fsEs(new_compare19(xwv441, xwv461))
new_esEs12(EQ, LT) → False
new_esEs12(LT, EQ) → False
new_esEs19(xwv440, xwv460, app(ty_Ratio, cah)) → new_esEs11(xwv440, xwv460, cah)
new_compare9(xwv4400, xwv4600, ty_Char) → new_compare12(xwv4400, xwv4600)
new_primEqInt(Neg(Zero), Neg(Zero)) → True
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Double) → new_ltEs16(xwv4410, xwv4610)
new_esEs24(xwv402, xwv3002, app(app(app(ty_@3, cff), cfg), cfh)) → new_esEs6(xwv402, xwv3002, cff, cfg, cfh)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(ty_Ratio, cae)) → new_ltEs10(xwv4410, xwv4610, cae)
new_lt20(xwv4410, xwv4610, ty_Ordering) → new_lt7(xwv4410, xwv4610)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, app(ty_Maybe, cea)) → new_esEs5(xwv400, xwv3000, cea)
new_compare15(xwv440, xwv460, cc, cd) → new_compare26(xwv440, xwv460, new_esEs4(xwv440, xwv460, cc, cd), cc, cd)
new_esEs28(xwv401, xwv3001, ty_Int) → new_esEs16(xwv401, xwv3001)
new_primEqInt(Neg(Succ(xwv4000)), Neg(Zero)) → False
new_primEqInt(Neg(Zero), Neg(Succ(xwv30000))) → False
new_compare26(xwv44, xwv46, True, ce, beg) → EQ
new_primPlusNat1(Zero, xwv300000) → Succ(xwv300000)
new_lt20(xwv4410, xwv4610, ty_@0) → new_lt10(xwv4410, xwv4610)
new_lt21(xwv4410, xwv4610, ty_Float) → new_lt14(xwv4410, xwv4610)
new_esEs23(xwv4410, xwv4610, ty_Integer) → new_esEs17(xwv4410, xwv4610)
new_lt12(xwv440, xwv460) → new_esEs12(new_compare7(xwv440, xwv460), LT)
new_lt13(xwv440, xwv460, beh) → new_esEs12(new_compare16(xwv440, xwv460, beh), LT)
new_esEs5(Just(xwv400), Just(xwv3000), ty_Bool) → new_esEs8(xwv400, xwv3000)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, ty_Char) → new_esEs9(xwv400, xwv3000)
new_esEs26(xwv400, xwv3000, app(app(ty_Either, chh), daa)) → new_esEs7(xwv400, xwv3000, chh, daa)
new_ltEs18(xwv441, xwv461, ty_Double) → new_ltEs16(xwv441, xwv461)
new_compare210(xwv440, xwv460, False) → new_compare10(xwv440, xwv460, new_ltEs8(xwv440, xwv460))
new_primCmpInt(Pos(Zero), Neg(Zero)) → EQ
new_primCmpInt(Neg(Zero), Pos(Zero)) → EQ
new_esEs10(:(xwv400, xwv401), [], bha) → False
new_esEs10([], :(xwv3000, xwv3001), bha) → False
new_esEs27(xwv4410, xwv4610, ty_Float) → new_esEs15(xwv4410, xwv4610)
new_ltEs19(xwv4412, xwv4612, ty_@0) → new_ltEs11(xwv4412, xwv4612)
new_primCmpNat0(Succ(xwv44000), Succ(xwv46000)) → new_primCmpNat0(xwv44000, xwv46000)
new_lt19(xwv4411, xwv4611, app(app(ty_Either, bah), bba)) → new_lt16(xwv4411, xwv4611, bah, bba)
new_compare11(xwv440, xwv460, False, beh) → GT
new_esEs26(xwv400, xwv3000, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_esEs18(xwv400, xwv3000, ty_Double) → new_esEs14(xwv400, xwv3000)
new_primEqInt(Pos(Succ(xwv4000)), Pos(Succ(xwv30000))) → new_primEqNat0(xwv4000, xwv30000)
new_compare29(xwv440, xwv460, False, bfa, bfb, bfc) → new_compare114(xwv440, xwv460, new_ltEs14(xwv440, xwv460, bfa, bfb, bfc), bfa, bfb, bfc)
new_esEs25(xwv401, xwv3001, app(ty_Maybe, che)) → new_esEs5(xwv401, xwv3001, che)
new_esEs18(xwv400, xwv3000, ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs29(xwv400, xwv3000, app(ty_Maybe, ddg)) → new_esEs5(xwv400, xwv3000, ddg)
new_compare9(xwv4400, xwv4600, app(ty_[], bb)) → new_compare0(xwv4400, xwv4600, bb)
new_ltEs18(xwv441, xwv461, app(app(ty_Either, bde), bcd)) → new_ltEs15(xwv441, xwv461, bde, bcd)
new_esEs8(False, False) → True
new_esEs10([], [], bha) → True
new_ltEs19(xwv4412, xwv4612, app(ty_Ratio, ced)) → new_ltEs10(xwv4412, xwv4612, ced)
new_primEqNat0(Succ(xwv4000), Succ(xwv30000)) → new_primEqNat0(xwv4000, xwv30000)
new_esEs27(xwv4410, xwv4610, ty_Integer) → new_esEs17(xwv4410, xwv4610)
new_esEs26(xwv400, xwv3000, ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_lt4(xwv440, xwv460, app(ty_Maybe, beh)) → new_lt13(xwv440, xwv460, beh)
new_esEs19(xwv440, xwv460, app(app(app(ty_@3, bfa), bfb), bfc)) → new_esEs6(xwv440, xwv460, bfa, bfb, bfc)
new_lt21(xwv4410, xwv4610, ty_Char) → new_lt6(xwv4410, xwv4610)
new_esEs18(xwv400, xwv3000, app(ty_[], bhb)) → new_esEs10(xwv400, xwv3000, bhb)
new_esEs29(xwv400, xwv3000, ty_Char) → new_esEs9(xwv400, xwv3000)
new_compare113(xwv440, xwv460, False, bfd, bfe) → GT
new_ltEs5(Just(xwv4410), Just(xwv4610), app(app(app(ty_@3, fh), ga), gb)) → new_ltEs14(xwv4410, xwv4610, fh, ga, gb)
new_primCompAux00(xwv136, LT) → LT
new_ltEs15(Left(xwv4410), Left(xwv4610), app(app(ty_@2, bce), bcf), bcd) → new_ltEs12(xwv4410, xwv4610, bce, bcf)
new_esEs18(xwv400, xwv3000, app(ty_Ratio, bhc)) → new_esEs11(xwv400, xwv3000, bhc)
new_esEs26(xwv400, xwv3000, app(app(ty_@2, dae), daf)) → new_esEs4(xwv400, xwv3000, dae, daf)
new_esEs12(EQ, EQ) → True
new_ltEs18(xwv441, xwv461, app(app(ty_@2, cf), eb)) → new_ltEs12(xwv441, xwv461, cf, eb)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Int, cbd) → new_esEs16(xwv400, xwv3000)
new_esEs25(xwv401, xwv3001, ty_Char) → new_esEs9(xwv401, xwv3001)
new_primEqInt(Pos(Succ(xwv4000)), Pos(Zero)) → False
new_primEqInt(Pos(Zero), Pos(Succ(xwv30000))) → False
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_@0) → new_ltEs11(xwv4410, xwv4610)
new_ltEs5(Nothing, Just(xwv4610), cad) → True
new_compare24(xwv440, xwv460, False, beh) → new_compare11(xwv440, xwv460, new_ltEs5(xwv440, xwv460, beh), beh)
new_lt4(xwv440, xwv460, app(app(ty_Either, bfd), bfe)) → new_lt16(xwv440, xwv460, bfd, bfe)
new_compare5(:%(xwv4400, xwv4401), :%(xwv4600, xwv4601), ty_Integer) → new_compare6(new_sr(xwv4400, xwv4601), new_sr(xwv4600, xwv4401))
new_primPlusNat0(Succ(xwv19200), Zero) → Succ(xwv19200)
new_primPlusNat0(Zero, Succ(xwv9100)) → Succ(xwv9100)
new_esEs24(xwv402, xwv3002, ty_Float) → new_esEs15(xwv402, xwv3002)
new_lt4(xwv440, xwv460, ty_Double) → new_lt17(xwv440, xwv460)
new_primCmpNat0(Zero, Zero) → EQ
new_esEs22(xwv4411, xwv4611, ty_Bool) → new_esEs8(xwv4411, xwv4611)
new_primCmpNat0(Succ(xwv44000), Zero) → GT
new_ltEs13(xwv441, xwv461) → new_fsEs(new_compare8(xwv441, xwv461))
new_esEs19(xwv440, xwv460, ty_@0) → new_esEs13(xwv440, xwv460)
new_primCmpInt(Neg(Zero), Pos(Succ(xwv4600))) → LT
new_compare6(Integer(xwv4400), Integer(xwv4600)) → new_primCmpInt(xwv4400, xwv4600)
new_ltEs19(xwv4412, xwv4612, app(app(ty_@2, gh), ha)) → new_ltEs12(xwv4412, xwv4612, gh, ha)
new_ltEs20(xwv4411, xwv4611, ty_Integer) → new_ltEs6(xwv4411, xwv4611)
new_lt21(xwv4410, xwv4610, app(app(ty_@2, ec), ed)) → new_lt11(xwv4410, xwv4610, ec, ed)
new_compare28(xwv440, xwv460, True, bfd, bfe) → EQ
new_ltEs19(xwv4412, xwv4612, ty_Double) → new_ltEs16(xwv4412, xwv4612)
new_primEqInt(Pos(Succ(xwv4000)), Neg(xwv3000)) → False
new_primEqInt(Neg(Succ(xwv4000)), Pos(xwv3000)) → False
new_esEs24(xwv402, xwv3002, app(app(ty_@2, cga), cgb)) → new_esEs4(xwv402, xwv3002, cga, cgb)
new_esEs25(xwv401, xwv3001, app(ty_Ratio, cge)) → new_esEs11(xwv401, xwv3001, cge)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Integer, cbd) → new_esEs17(xwv400, xwv3000)
new_esEs25(xwv401, xwv3001, ty_@0) → new_esEs13(xwv401, xwv3001)
new_esEs27(xwv4410, xwv4610, app(ty_Maybe, ee)) → new_esEs5(xwv4410, xwv4610, ee)
new_esEs18(xwv400, xwv3000, app(app(ty_@2, caa), cab)) → new_esEs4(xwv400, xwv3000, caa, cab)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Float, cbd) → new_esEs15(xwv400, xwv3000)
new_lt16(xwv440, xwv460, bfd, bfe) → new_esEs12(new_compare18(xwv440, xwv460, bfd, bfe), LT)
new_esEs27(xwv4410, xwv4610, app(ty_Ratio, dba)) → new_esEs11(xwv4410, xwv4610, dba)
new_esEs5(Just(xwv400), Just(xwv3000), ty_@0) → new_esEs13(xwv400, xwv3000)
new_primCmpInt(Neg(Succ(xwv4400)), Neg(Zero)) → LT
new_primEqInt(Pos(Zero), Neg(Succ(xwv30000))) → False
new_primEqInt(Neg(Zero), Pos(Succ(xwv30000))) → False
new_esEs13(@0, @0) → True
new_esEs24(xwv402, xwv3002, ty_Ordering) → new_esEs12(xwv402, xwv3002)
new_primCompAux00(xwv136, EQ) → xwv136
new_primCmpInt(Pos(Zero), Pos(Succ(xwv4600))) → new_primCmpNat0(Zero, Succ(xwv4600))
new_esEs28(xwv401, xwv3001, app(app(ty_Either, dbf), dbg)) → new_esEs7(xwv401, xwv3001, dbf, dbg)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, ty_@0) → new_esEs13(xwv400, xwv3000)
new_ltEs8(GT, LT) → False
new_esEs25(xwv401, xwv3001, ty_Float) → new_esEs15(xwv401, xwv3001)
new_esEs26(xwv400, xwv3000, ty_Bool) → new_esEs8(xwv400, xwv3000)
new_esEs28(xwv401, xwv3001, ty_Ordering) → new_esEs12(xwv401, xwv3001)
new_compare9(xwv4400, xwv4600, ty_Ordering) → new_compare13(xwv4400, xwv4600)
new_lt21(xwv4410, xwv4610, ty_@0) → new_lt10(xwv4410, xwv4610)
new_not(False) → True
new_esEs7(Left(xwv400), Left(xwv3000), ty_Char, cbd) → new_esEs9(xwv400, xwv3000)
new_primCompAux0(xwv4400, xwv4600, xwv130, ba) → new_primCompAux00(xwv130, new_compare9(xwv4400, xwv4600, ba))
new_compare24(xwv440, xwv460, True, beh) → EQ
new_ltEs20(xwv4411, xwv4611, app(ty_Ratio, dah)) → new_ltEs10(xwv4411, xwv4611, dah)
new_esEs12(GT, EQ) → False
new_esEs12(EQ, GT) → False
new_compare25(xwv440, xwv460) → new_compare27(xwv440, xwv460, new_esEs8(xwv440, xwv460))
new_lt20(xwv4410, xwv4610, app(app(app(ty_@3, bbf), bbg), bbh)) → new_lt15(xwv4410, xwv4610, bbf, bbg, bbh)
new_esEs28(xwv401, xwv3001, ty_Char) → new_esEs9(xwv401, xwv3001)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Bool, cbd) → new_esEs8(xwv400, xwv3000)
new_lt20(xwv4410, xwv4610, app(app(ty_Either, bca), bcb)) → new_lt16(xwv4410, xwv4610, bca, bcb)
new_compare0(:(xwv4400, xwv4401), [], ba) → GT
new_esEs23(xwv4410, xwv4610, app(ty_Ratio, cef)) → new_esEs11(xwv4410, xwv4610, cef)
new_esEs23(xwv4410, xwv4610, app(ty_[], bbb)) → new_esEs10(xwv4410, xwv4610, bbb)
new_compare13(xwv440, xwv460) → new_compare210(xwv440, xwv460, new_esEs12(xwv440, xwv460))
new_ltEs19(xwv4412, xwv4612, app(app(ty_Either, hf), hg)) → new_ltEs15(xwv4412, xwv4612, hf, hg)
new_esEs24(xwv402, xwv3002, app(ty_Maybe, cgc)) → new_esEs5(xwv402, xwv3002, cgc)
new_lt19(xwv4411, xwv4611, ty_Float) → new_lt14(xwv4411, xwv4611)
new_ltEs20(xwv4411, xwv4611, app(ty_Maybe, dc)) → new_ltEs5(xwv4411, xwv4611, dc)
new_compare28(xwv440, xwv460, False, bfd, bfe) → new_compare113(xwv440, xwv460, new_ltEs15(xwv440, xwv460, bfd, bfe), bfd, bfe)
new_lt19(xwv4411, xwv4611, ty_Char) → new_lt6(xwv4411, xwv4611)
new_primCmpInt(Pos(Succ(xwv4400)), Neg(xwv460)) → GT
new_esEs18(xwv400, xwv3000, app(app(ty_Either, bhd), bhe)) → new_esEs7(xwv400, xwv3000, bhd, bhe)
new_ltEs18(xwv441, xwv461, ty_Char) → new_ltEs7(xwv441, xwv461)
new_ltEs19(xwv4412, xwv4612, ty_Float) → new_ltEs13(xwv4412, xwv4612)
new_primMulInt(Pos(xwv4000), Pos(xwv30000)) → Pos(new_primMulNat0(xwv4000, xwv30000))
new_lt21(xwv4410, xwv4610, ty_Int) → new_lt12(xwv4410, xwv4610)
new_ltEs20(xwv4411, xwv4611, ty_Bool) → new_ltEs17(xwv4411, xwv4611)
new_esEs19(xwv440, xwv460, ty_Ordering) → new_esEs12(xwv440, xwv460)
new_primMulInt(Neg(xwv4000), Neg(xwv30000)) → Pos(new_primMulNat0(xwv4000, xwv30000))
new_esEs7(Right(xwv400), Right(xwv3000), ccg, app(app(ty_@2, cdg), cdh)) → new_esEs4(xwv400, xwv3000, cdg, cdh)
new_primEqNat0(Succ(xwv4000), Zero) → False
new_primEqNat0(Zero, Succ(xwv30000)) → False
new_ltEs19(xwv4412, xwv4612, app(app(app(ty_@3, hc), hd), he)) → new_ltEs14(xwv4412, xwv4612, hc, hd, he)
new_ltEs5(Nothing, Nothing, cad) → True
new_lt4(xwv440, xwv460, app(app(app(ty_@3, bfa), bfb), bfc)) → new_lt15(xwv440, xwv460, bfa, bfb, bfc)
new_ltEs4(xwv441, xwv461) → new_fsEs(new_compare7(xwv441, xwv461))
new_primPlusNat0(Zero, Zero) → Zero
new_esEs22(xwv4411, xwv4611, ty_Double) → new_esEs14(xwv4411, xwv4611)
new_ltEs19(xwv4412, xwv4612, ty_Char) → new_ltEs7(xwv4412, xwv4612)
new_primEqInt(Pos(Zero), Pos(Zero)) → True
new_esEs28(xwv401, xwv3001, app(app(app(ty_@3, dbh), dca), dcb)) → new_esEs6(xwv401, xwv3001, dbh, dca, dcb)
new_esEs5(Just(xwv400), Just(xwv3000), app(ty_[], bfg)) → new_esEs10(xwv400, xwv3000, bfg)
new_lt19(xwv4411, xwv4611, ty_Double) → new_lt17(xwv4411, xwv4611)
new_ltEs18(xwv441, xwv461, ty_Bool) → new_ltEs17(xwv441, xwv461)
new_compare112(xwv104, xwv105, xwv106, xwv107, False, ceb, cec) → GT
new_esEs27(xwv4410, xwv4610, app(app(app(ty_@3, ef), eg), eh)) → new_esEs6(xwv4410, xwv4610, ef, eg, eh)
new_compare210(xwv440, xwv460, True) → EQ
new_esEs19(xwv440, xwv460, app(ty_Maybe, beh)) → new_esEs5(xwv440, xwv460, beh)
new_ltEs14(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), ge, gf, baa) → new_pePe(new_lt20(xwv4410, xwv4610, ge), new_asAs(new_esEs23(xwv4410, xwv4610, ge), new_pePe(new_lt19(xwv4411, xwv4611, gf), new_asAs(new_esEs22(xwv4411, xwv4611, gf), new_ltEs19(xwv4412, xwv4612, baa)))))
new_lt21(xwv4410, xwv4610, ty_Ordering) → new_lt7(xwv4410, xwv4610)
new_lt20(xwv4410, xwv4610, ty_Bool) → new_lt18(xwv4410, xwv4610)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Char, bcd) → new_ltEs7(xwv4410, xwv4610)
new_esEs26(xwv400, xwv3000, ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs8(True, True) → True
new_esEs26(xwv400, xwv3000, app(ty_Maybe, dag)) → new_esEs5(xwv400, xwv3000, dag)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, ty_Float) → new_ltEs13(xwv4410, xwv4610)
new_primPlusNat1(Succ(xwv950), xwv300000) → Succ(Succ(new_primPlusNat0(xwv950, xwv300000)))
new_lt20(xwv4410, xwv4610, ty_Int) → new_lt12(xwv4410, xwv4610)
new_ltEs19(xwv4412, xwv4612, app(ty_Maybe, hb)) → new_ltEs5(xwv4412, xwv4612, hb)
new_esEs19(xwv440, xwv460, ty_Char) → new_esEs9(xwv440, xwv460)
new_ltEs15(Left(xwv4410), Left(xwv4610), app(ty_Maybe, bcg), bcd) → new_ltEs5(xwv4410, xwv4610, bcg)
new_lt19(xwv4411, xwv4611, ty_Bool) → new_lt18(xwv4411, xwv4611)
new_primCmpInt(Neg(Zero), Neg(Succ(xwv4600))) → new_primCmpNat0(Succ(xwv4600), Zero)
new_esEs25(xwv401, xwv3001, ty_Int) → new_esEs16(xwv401, xwv3001)
new_primCmpInt(Pos(Zero), Neg(Succ(xwv4600))) → GT
new_lt21(xwv4410, xwv4610, app(ty_Maybe, ee)) → new_lt13(xwv4410, xwv4610, ee)
new_esEs7(Left(xwv400), Left(xwv3000), app(app(ty_@2, ccd), cce), cbd) → new_esEs4(xwv400, xwv3000, ccd, cce)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Float, bcd) → new_ltEs13(xwv4410, xwv4610)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Char) → new_ltEs7(xwv4410, xwv4610)
new_esEs5(Just(xwv400), Just(xwv3000), app(app(app(ty_@3, bgc), bgd), bge)) → new_esEs6(xwv400, xwv3000, bgc, bgd, bge)
new_lt21(xwv4410, xwv4610, ty_Integer) → new_lt5(xwv4410, xwv4610)
new_ltEs19(xwv4412, xwv4612, ty_Bool) → new_ltEs17(xwv4412, xwv4612)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, ty_Ordering) → new_ltEs8(xwv4410, xwv4610)
new_ltEs20(xwv4411, xwv4611, ty_Float) → new_ltEs13(xwv4411, xwv4611)
new_sr0(xwv400, xwv3000) → new_primMulInt(xwv400, xwv3000)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Ordering) → new_ltEs8(xwv4410, xwv4610)
new_esEs19(xwv440, xwv460, ty_Double) → new_esEs14(xwv440, xwv460)
new_esEs5(Just(xwv400), Just(xwv3000), ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs24(xwv402, xwv3002, app(ty_[], cfb)) → new_esEs10(xwv402, xwv3002, cfb)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Ordering, cbd) → new_esEs12(xwv400, xwv3000)
new_esEs4(@2(xwv400, xwv401), @2(xwv3000, xwv3001), dbb, dbc) → new_asAs(new_esEs29(xwv400, xwv3000, dbb), new_esEs28(xwv401, xwv3001, dbc))
new_lt4(xwv440, xwv460, app(app(ty_@2, cc), cd)) → new_lt11(xwv440, xwv460, cc, cd)
new_esEs28(xwv401, xwv3001, ty_Bool) → new_esEs8(xwv401, xwv3001)
new_esEs21(xwv400, xwv3000, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_ltEs20(xwv4411, xwv4611, app(app(ty_Either, dg), dh)) → new_ltEs15(xwv4411, xwv4611, dg, dh)
new_lt19(xwv4411, xwv4611, ty_Ordering) → new_lt7(xwv4411, xwv4611)
new_primCmpInt(Neg(Zero), Neg(Zero)) → EQ
new_esEs5(Just(xwv400), Just(xwv3000), ty_Float) → new_esEs15(xwv400, xwv3000)
new_ltEs6(xwv441, xwv461) → new_fsEs(new_compare6(xwv441, xwv461))
new_esEs28(xwv401, xwv3001, app(app(ty_@2, dcc), dcd)) → new_esEs4(xwv401, xwv3001, dcc, dcd)
new_asAs(False, xwv55) → False
new_ltEs20(xwv4411, xwv4611, ty_Double) → new_ltEs16(xwv4411, xwv4611)
new_esEs5(Just(xwv400), Just(xwv3000), app(app(ty_Either, bga), bgb)) → new_esEs7(xwv400, xwv3000, bga, bgb)
new_primMulInt(Neg(xwv4000), Pos(xwv30000)) → Neg(new_primMulNat0(xwv4000, xwv30000))
new_primMulInt(Pos(xwv4000), Neg(xwv30000)) → Neg(new_primMulNat0(xwv4000, xwv30000))
new_lt4(xwv440, xwv460, ty_Int) → new_lt12(xwv440, xwv460)
new_lt4(xwv440, xwv460, ty_Ordering) → new_lt7(xwv440, xwv460)
new_primMulNat0(Zero, Succ(xwv300000)) → Zero
new_primMulNat0(Succ(xwv40000), Zero) → Zero
new_esEs23(xwv4410, xwv4610, app(app(app(ty_@3, bbf), bbg), bbh)) → new_esEs6(xwv4410, xwv4610, bbf, bbg, bbh)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, app(ty_Maybe, bea)) → new_ltEs5(xwv4410, xwv4610, bea)
new_esEs21(xwv400, xwv3000, ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs23(xwv4410, xwv4610, ty_Ordering) → new_esEs12(xwv4410, xwv4610)
new_esEs28(xwv401, xwv3001, app(ty_[], dbd)) → new_esEs10(xwv401, xwv3001, dbd)
new_esEs22(xwv4411, xwv4611, app(ty_[], hh)) → new_esEs10(xwv4411, xwv4611, hh)
new_esEs19(xwv440, xwv460, ty_Int) → new_esEs16(xwv440, xwv460)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(ty_Maybe, fg)) → new_ltEs5(xwv4410, xwv4610, fg)
new_esEs14(Double(xwv400, xwv401), Double(xwv3000, xwv3001)) → new_esEs16(new_sr0(xwv400, xwv3000), new_sr0(xwv401, xwv3001))
new_esEs18(xwv400, xwv3000, app(ty_Maybe, cac)) → new_esEs5(xwv400, xwv3000, cac)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Int, bcd) → new_ltEs4(xwv4410, xwv4610)
new_lt8(xwv440, xwv460, ba) → new_esEs12(new_compare0(xwv440, xwv460, ba), LT)
new_ltEs18(xwv441, xwv461, ty_Float) → new_ltEs13(xwv441, xwv461)
new_esEs27(xwv4410, xwv4610, ty_@0) → new_esEs13(xwv4410, xwv4610)
new_ltEs12(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), cf, eb) → new_pePe(new_lt21(xwv4410, xwv4610, cf), new_asAs(new_esEs27(xwv4410, xwv4610, cf), new_ltEs20(xwv4411, xwv4611, eb)))
new_esEs24(xwv402, xwv3002, ty_Integer) → new_esEs17(xwv402, xwv3002)
new_esEs23(xwv4410, xwv4610, ty_Float) → new_esEs15(xwv4410, xwv4610)
new_lt17(xwv440, xwv460) → new_esEs12(new_compare19(xwv440, xwv460), LT)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, ty_Int) → new_ltEs4(xwv4410, xwv4610)
new_esEs23(xwv4410, xwv4610, app(ty_Maybe, bbe)) → new_esEs5(xwv4410, xwv4610, bbe)
new_ltEs17(True, True) → True
new_esEs25(xwv401, xwv3001, app(app(app(ty_@3, cgh), cha), chb)) → new_esEs6(xwv401, xwv3001, cgh, cha, chb)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Integer, bcd) → new_ltEs6(xwv4410, xwv4610)
new_esEs23(xwv4410, xwv4610, ty_Char) → new_esEs9(xwv4410, xwv4610)
new_lt4(xwv440, xwv460, ty_Bool) → new_lt18(xwv440, xwv460)
new_lt21(xwv4410, xwv4610, ty_Bool) → new_lt18(xwv4410, xwv4610)
new_esEs23(xwv4410, xwv4610, ty_Int) → new_esEs16(xwv4410, xwv4610)
new_compare27(xwv440, xwv460, True) → EQ
new_esEs27(xwv4410, xwv4610, app(ty_[], ea)) → new_esEs10(xwv4410, xwv4610, ea)
new_esEs7(Left(xwv400), Left(xwv3000), app(app(app(ty_@3, cca), ccb), ccc), cbd) → new_esEs6(xwv400, xwv3000, cca, ccb, ccc)
new_compare17(xwv440, xwv460, bfa, bfb, bfc) → new_compare29(xwv440, xwv460, new_esEs6(xwv440, xwv460, bfa, bfb, bfc), bfa, bfb, bfc)
new_lt14(xwv440, xwv460) → new_esEs12(new_compare8(xwv440, xwv460), LT)
new_ltEs8(LT, GT) → True
new_esEs5(Nothing, Just(xwv3000), bff) → False
new_esEs5(Just(xwv400), Nothing, bff) → False
new_lt9(xwv440, xwv460, cah) → new_esEs12(new_compare5(xwv440, xwv460, cah), LT)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Bool, bcd) → new_ltEs17(xwv4410, xwv4610)
new_esEs27(xwv4410, xwv4610, ty_Int) → new_esEs16(xwv4410, xwv4610)
new_ltEs9(xwv441, xwv461, h) → new_fsEs(new_compare0(xwv441, xwv461, h))
new_lt11(xwv440, xwv460, cc, cd) → new_esEs12(new_compare15(xwv440, xwv460, cc, cd), LT)
new_esEs27(xwv4410, xwv4610, app(app(ty_@2, ec), ed)) → new_esEs4(xwv4410, xwv4610, ec, ed)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, ty_Int) → new_esEs16(xwv400, xwv3000)
new_ltEs10(xwv441, xwv461, cag) → new_fsEs(new_compare5(xwv441, xwv461, cag))
new_compare9(xwv4400, xwv4600, ty_@0) → new_compare14(xwv4400, xwv4600)
new_lt20(xwv4410, xwv4610, ty_Integer) → new_lt5(xwv4410, xwv4610)
new_esEs10(:(xwv400, xwv401), :(xwv3000, xwv3001), bha) → new_asAs(new_esEs18(xwv400, xwv3000, bha), new_esEs10(xwv401, xwv3001, bha))
new_esEs5(Just(xwv400), Just(xwv3000), app(ty_Ratio, bfh)) → new_esEs11(xwv400, xwv3000, bfh)
new_primCmpInt(Pos(Succ(xwv4400)), Pos(Zero)) → GT
new_primCmpInt(Pos(Succ(xwv4400)), Pos(Succ(xwv4600))) → new_primCmpNat0(xwv4400, xwv4600)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Bool) → new_ltEs17(xwv4410, xwv4610)
new_esEs7(Right(xwv400), Right(xwv3000), ccg, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_esEs5(Just(xwv400), Just(xwv3000), ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_ltEs17(False, True) → True
new_compare26(@2(xwv440, xwv441), @2(xwv460, xwv461), False, ce, beg) → new_compare110(xwv440, xwv441, xwv460, xwv461, new_lt4(xwv440, xwv460, ce), new_asAs(new_esEs19(xwv440, xwv460, ce), new_ltEs18(xwv441, xwv461, beg)), ce, beg)
new_esEs27(xwv4410, xwv4610, ty_Ordering) → new_esEs12(xwv4410, xwv4610)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Double, bcd) → new_ltEs16(xwv4410, xwv4610)
new_esEs5(Nothing, Nothing, bff) → True
new_esEs28(xwv401, xwv3001, app(ty_Maybe, dce)) → new_esEs5(xwv401, xwv3001, dce)
new_lt21(xwv4410, xwv4610, ty_Double) → new_lt17(xwv4410, xwv4610)
new_esEs7(Left(xwv400), Left(xwv3000), app(ty_Maybe, ccf), cbd) → new_esEs5(xwv400, xwv3000, ccf)
new_esEs29(xwv400, xwv3000, app(app(app(ty_@3, ddb), ddc), ddd)) → new_esEs6(xwv400, xwv3000, ddb, ddc, ddd)
new_esEs22(xwv4411, xwv4611, ty_Integer) → new_esEs17(xwv4411, xwv4611)
new_esEs29(xwv400, xwv3000, app(app(ty_Either, dch), dda)) → new_esEs7(xwv400, xwv3000, dch, dda)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_@0, bcd) → new_ltEs11(xwv4410, xwv4610)
new_esEs19(xwv440, xwv460, ty_Integer) → new_esEs17(xwv440, xwv460)
new_ltEs11(xwv441, xwv461) → new_fsEs(new_compare14(xwv441, xwv461))
new_esEs12(GT, GT) → True
new_esEs29(xwv400, xwv3000, app(ty_[], dcf)) → new_esEs10(xwv400, xwv3000, dcf)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, app(app(ty_Either, bee), bef)) → new_ltEs15(xwv4410, xwv4610, bee, bef)
new_lt21(xwv4410, xwv4610, app(app(app(ty_@3, ef), eg), eh)) → new_lt15(xwv4410, xwv4610, ef, eg, eh)
new_esEs26(xwv400, xwv3000, ty_Char) → new_esEs9(xwv400, xwv3000)
new_esEs28(xwv401, xwv3001, app(ty_Ratio, dbe)) → new_esEs11(xwv401, xwv3001, dbe)
new_esEs26(xwv400, xwv3000, app(ty_Ratio, chg)) → new_esEs11(xwv400, xwv3000, chg)
new_lt19(xwv4411, xwv4611, ty_@0) → new_lt10(xwv4411, xwv4611)
new_esEs9(Char(xwv400), Char(xwv3000)) → new_primEqNat0(xwv400, xwv3000)
new_esEs22(xwv4411, xwv4611, app(ty_Maybe, bad)) → new_esEs5(xwv4411, xwv4611, bad)
new_ltEs8(LT, LT) → True
new_primPlusNat0(Succ(xwv19200), Succ(xwv9100)) → Succ(Succ(new_primPlusNat0(xwv19200, xwv9100)))
new_esEs22(xwv4411, xwv4611, ty_@0) → new_esEs13(xwv4411, xwv4611)
new_esEs28(xwv401, xwv3001, ty_Float) → new_esEs15(xwv401, xwv3001)
new_esEs29(xwv400, xwv3000, ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_compare0([], :(xwv4600, xwv4601), ba) → LT
new_compare9(xwv4400, xwv4600, ty_Int) → new_compare7(xwv4400, xwv4600)
new_asAs(True, xwv55) → xwv55
new_lt19(xwv4411, xwv4611, app(ty_Maybe, bad)) → new_lt13(xwv4411, xwv4611, bad)
new_ltEs15(Left(xwv4410), Left(xwv4610), app(ty_Ratio, cbb), bcd) → new_ltEs10(xwv4410, xwv4610, cbb)
new_esEs29(xwv400, xwv3000, app(ty_Ratio, dcg)) → new_esEs11(xwv400, xwv3000, dcg)
new_esEs7(Left(xwv400), Left(xwv3000), ty_@0, cbd) → new_esEs13(xwv400, xwv3000)
new_ltEs15(Left(xwv4410), Left(xwv4610), app(ty_[], bcc), bcd) → new_ltEs9(xwv4410, xwv4610, bcc)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, app(ty_[], bdf)) → new_ltEs9(xwv4410, xwv4610, bdf)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Int) → new_ltEs4(xwv4410, xwv4610)
new_esEs19(xwv440, xwv460, ty_Bool) → new_esEs8(xwv440, xwv460)
new_ltEs15(Left(xwv4410), Left(xwv4610), app(app(ty_Either, bdc), bdd), bcd) → new_ltEs15(xwv4410, xwv4610, bdc, bdd)
new_ltEs15(Left(xwv4410), Right(xwv4610), bde, bcd) → True
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Float) → new_ltEs13(xwv4410, xwv4610)
new_compare9(xwv4400, xwv4600, ty_Float) → new_compare8(xwv4400, xwv4600)
new_compare10(xwv440, xwv460, True) → LT
new_ltEs18(xwv441, xwv461, ty_Ordering) → new_ltEs8(xwv441, xwv461)
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, ty_Double) → new_ltEs16(xwv4410, xwv4610)
new_esEs18(xwv400, xwv3000, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_lt4(xwv440, xwv460, ty_Integer) → new_lt5(xwv440, xwv460)
new_compare10(xwv440, xwv460, False) → GT
new_ltEs15(Right(xwv4410), Right(xwv4610), bde, app(app(ty_@2, bdg), bdh)) → new_ltEs12(xwv4410, xwv4610, bdg, bdh)
new_esEs18(xwv400, xwv3000, ty_Bool) → new_esEs8(xwv400, xwv3000)
new_primCompAux00(xwv136, GT) → GT
new_esEs25(xwv401, xwv3001, app(app(ty_Either, cgf), cgg)) → new_esEs7(xwv401, xwv3001, cgf, cgg)
new_ltEs19(xwv4412, xwv4612, ty_Int) → new_ltEs4(xwv4412, xwv4612)
new_esEs25(xwv401, xwv3001, ty_Bool) → new_esEs8(xwv401, xwv3001)
new_primCmpInt(Pos(Zero), Pos(Zero)) → EQ
new_ltEs20(xwv4411, xwv4611, ty_Char) → new_ltEs7(xwv4411, xwv4611)
new_ltEs15(Right(xwv4410), Left(xwv4610), bde, bcd) → False
new_esEs19(xwv440, xwv460, app(app(ty_@2, cc), cd)) → new_esEs4(xwv440, xwv460, cc, cd)
new_esEs22(xwv4411, xwv4611, app(ty_Ratio, cee)) → new_esEs11(xwv4411, xwv4611, cee)
new_primEqInt(Pos(Zero), Neg(Zero)) → True
new_primEqInt(Neg(Zero), Pos(Zero)) → True
new_esEs27(xwv4410, xwv4610, ty_Char) → new_esEs9(xwv4410, xwv4610)
new_primCmpInt(Neg(Succ(xwv4400)), Pos(xwv460)) → LT
new_esEs22(xwv4411, xwv4611, ty_Int) → new_esEs16(xwv4411, xwv4611)
new_ltEs18(xwv441, xwv461, app(app(app(ty_@3, ge), gf), baa)) → new_ltEs14(xwv441, xwv461, ge, gf, baa)
new_esEs24(xwv402, xwv3002, ty_Double) → new_esEs14(xwv402, xwv3002)
new_not(True) → False
new_compare27(xwv440, xwv460, False) → new_compare111(xwv440, xwv460, new_ltEs17(xwv440, xwv460))

The set Q consists of the following terms:

new_lt5(x0, x1)
new_esEs28(x0, x1, ty_Int)
new_compare5(:%(x0, x1), :%(x2, x3), ty_Integer)
new_esEs18(x0, x1, app(app(ty_Either, x2), x3))
new_esEs27(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs20(x0, x1, app(ty_[], x2))
new_esEs13(@0, @0)
new_esEs29(x0, x1, app(app(ty_Either, x2), x3))
new_esEs7(Left(x0), Left(x1), ty_Char, x2)
new_esEs27(x0, x1, app(ty_Ratio, x2))
new_esEs7(Right(x0), Right(x1), x2, ty_Int)
new_esEs26(x0, x1, ty_@0)
new_ltEs19(x0, x1, ty_Integer)
new_esEs5(Just(x0), Just(x1), ty_Char)
new_primCompAux00(x0, LT)
new_compare28(x0, x1, True, x2, x3)
new_ltEs15(Left(x0), Left(x1), app(ty_Ratio, x2), x3)
new_lt21(x0, x1, ty_Char)
new_esEs20(x0, x1, ty_Int)
new_esEs9(Char(x0), Char(x1))
new_compare9(x0, x1, app(app(ty_Either, x2), x3))
new_esEs22(x0, x1, app(ty_Maybe, x2))
new_ltEs20(x0, x1, ty_Bool)
new_ltEs8(EQ, EQ)
new_ltEs15(Left(x0), Left(x1), app(ty_[], x2), x3)
new_ltEs15(Right(x0), Right(x1), x2, app(ty_[], x3))
new_esEs29(x0, x1, ty_Float)
new_lt19(x0, x1, ty_Double)
new_esEs21(x0, x1, ty_Integer)
new_esEs18(x0, x1, ty_Bool)
new_ltEs15(Right(x0), Right(x1), x2, ty_Double)
new_ltEs5(Just(x0), Just(x1), ty_Integer)
new_ltEs19(x0, x1, ty_Char)
new_primCmpInt(Neg(Succ(x0)), Neg(Succ(x1)))
new_esEs26(x0, x1, ty_Float)
new_esEs27(x0, x1, ty_Double)
new_lt20(x0, x1, ty_Ordering)
new_compare9(x0, x1, ty_Bool)
new_esEs19(x0, x1, ty_Char)
new_esEs29(x0, x1, app(ty_Maybe, x2))
new_compare9(x0, x1, ty_Float)
new_esEs26(x0, x1, app(ty_Ratio, x2))
new_ltEs19(x0, x1, ty_@0)
new_esEs22(x0, x1, app(ty_[], x2))
new_esEs7(Left(x0), Left(x1), app(app(ty_@2, x2), x3), x4)
new_compare24(x0, x1, True, x2)
new_compare113(x0, x1, False, x2, x3)
new_compare16(x0, x1, x2)
new_esEs26(x0, x1, ty_Char)
new_esEs25(x0, x1, ty_Float)
new_ltEs18(x0, x1, ty_Bool)
new_compare112(x0, x1, x2, x3, True, x4, x5)
new_ltEs20(x0, x1, ty_Float)
new_esEs10(:(x0, x1), :(x2, x3), x4)
new_ltEs18(x0, x1, ty_Integer)
new_primEqInt(Pos(Zero), Pos(Succ(x0)))
new_esEs19(x0, x1, ty_Ordering)
new_primCmpNat0(Zero, Succ(x0))
new_lt21(x0, x1, app(app(ty_@2, x2), x3))
new_compare10(x0, x1, False)
new_esEs26(x0, x1, app(ty_[], x2))
new_ltEs5(Just(x0), Just(x1), app(ty_Maybe, x2))
new_pePe(False, x0)
new_ltEs15(Right(x0), Right(x1), x2, app(ty_Maybe, x3))
new_esEs28(x0, x1, ty_Float)
new_esEs12(EQ, GT)
new_esEs12(GT, EQ)
new_ltEs20(x0, x1, ty_@0)
new_esEs7(Left(x0), Left(x1), app(app(app(ty_@3, x2), x3), x4), x5)
new_esEs22(x0, x1, ty_Char)
new_primEqInt(Neg(Succ(x0)), Neg(Zero))
new_esEs12(GT, GT)
new_esEs19(x0, x1, ty_Int)
new_lt20(x0, x1, app(ty_[], x2))
new_lt21(x0, x1, ty_Float)
new_esEs26(x0, x1, app(ty_Maybe, x2))
new_lt21(x0, x1, ty_Int)
new_ltEs20(x0, x1, app(app(ty_Either, x2), x3))
new_compare0([], :(x0, x1), x2)
new_ltEs19(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs18(x0, x1, app(ty_Maybe, x2))
new_compare11(x0, x1, True, x2)
new_lt6(x0, x1)
new_esEs24(x0, x1, app(app(ty_@2, x2), x3))
new_esEs8(True, True)
new_esEs28(x0, x1, app(ty_Maybe, x2))
new_ltEs20(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_primEqInt(Pos(Succ(x0)), Pos(Zero))
new_primEqInt(Neg(Zero), Pos(Succ(x0)))
new_primEqInt(Pos(Zero), Neg(Succ(x0)))
new_esEs27(x0, x1, ty_Float)
new_esEs22(x0, x1, ty_Bool)
new_ltEs11(x0, x1)
new_ltEs5(Just(x0), Just(x1), ty_@0)
new_compare5(:%(x0, x1), :%(x2, x3), ty_Int)
new_esEs22(x0, x1, ty_Ordering)
new_lt4(x0, x1, app(ty_Ratio, x2))
new_esEs29(x0, x1, ty_Int)
new_esEs19(x0, x1, app(app(ty_@2, x2), x3))
new_esEs26(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare110(x0, x1, x2, x3, True, x4, x5, x6)
new_esEs25(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs28(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs17(False, False)
new_primPlusNat1(Zero, x0)
new_esEs28(x0, x1, ty_Bool)
new_ltEs10(x0, x1, x2)
new_esEs23(x0, x1, ty_Char)
new_esEs23(x0, x1, app(app(ty_Either, x2), x3))
new_lt16(x0, x1, x2, x3)
new_primEqNat0(Zero, Zero)
new_esEs23(x0, x1, ty_Integer)
new_ltEs18(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs15(Right(x0), Left(x1), x2, x3)
new_ltEs15(Left(x0), Right(x1), x2, x3)
new_esEs5(Just(x0), Just(x1), ty_Integer)
new_esEs29(x0, x1, ty_@0)
new_esEs27(x0, x1, app(app(ty_Either, x2), x3))
new_lt12(x0, x1)
new_lt19(x0, x1, ty_Ordering)
new_esEs26(x0, x1, ty_Double)
new_ltEs15(Left(x0), Left(x1), ty_Ordering, x2)
new_esEs21(x0, x1, ty_Int)
new_primPlusNat0(Succ(x0), Succ(x1))
new_esEs14(Double(x0, x1), Double(x2, x3))
new_esEs24(x0, x1, ty_Ordering)
new_esEs7(Right(x0), Right(x1), x2, app(app(ty_@2, x3), x4))
new_lt4(x0, x1, ty_Char)
new_primMulNat0(Zero, Zero)
new_compare8(Float(x0, x1), Float(x2, x3))
new_esEs19(x0, x1, app(app(ty_Either, x2), x3))
new_lt4(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs24(x0, x1, app(ty_Ratio, x2))
new_esEs28(x0, x1, ty_@0)
new_primCmpInt(Neg(Zero), Pos(Succ(x0)))
new_primCmpInt(Pos(Zero), Neg(Succ(x0)))
new_ltEs5(Just(x0), Just(x1), ty_Float)
new_ltEs15(Right(x0), Right(x1), x2, app(app(ty_@2, x3), x4))
new_compare26(x0, x1, True, x2, x3)
new_esEs26(x0, x1, ty_Int)
new_asAs(False, x0)
new_ltEs5(Just(x0), Just(x1), app(app(ty_@2, x2), x3))
new_esEs25(x0, x1, ty_Ordering)
new_primCmpInt(Neg(Succ(x0)), Pos(x1))
new_ltEs15(Right(x0), Right(x1), x2, ty_Bool)
new_primCmpInt(Pos(Succ(x0)), Neg(x1))
new_esEs5(Just(x0), Just(x1), ty_Ordering)
new_esEs24(x0, x1, ty_Int)
new_compare9(x0, x1, ty_Double)
new_primEqInt(Neg(Zero), Neg(Succ(x0)))
new_primMulInt(Pos(x0), Pos(x1))
new_esEs19(x0, x1, ty_Integer)
new_compare210(x0, x1, False)
new_esEs5(Just(x0), Just(x1), app(ty_Maybe, x2))
new_ltEs17(True, True)
new_esEs27(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs15(Left(x0), Left(x1), ty_Char, x2)
new_lt15(x0, x1, x2, x3, x4)
new_ltEs18(x0, x1, ty_Double)
new_ltEs15(Left(x0), Left(x1), app(ty_Maybe, x2), x3)
new_esEs4(@2(x0, x1), @2(x2, x3), x4, x5)
new_esEs26(x0, x1, ty_Ordering)
new_compare27(x0, x1, True)
new_lt19(x0, x1, app(app(ty_Either, x2), x3))
new_esEs27(x0, x1, app(ty_[], x2))
new_compare9(x0, x1, ty_Integer)
new_esEs7(Left(x0), Left(x1), app(app(ty_Either, x2), x3), x4)
new_compare15(x0, x1, x2, x3)
new_esEs27(x0, x1, ty_Bool)
new_ltEs15(Left(x0), Left(x1), app(app(app(ty_@3, x2), x3), x4), x5)
new_lt20(x0, x1, app(ty_Maybe, x2))
new_lt19(x0, x1, ty_Int)
new_lt17(x0, x1)
new_esEs7(Right(x0), Right(x1), x2, app(app(app(ty_@3, x3), x4), x5))
new_lt21(x0, x1, app(ty_[], x2))
new_lt21(x0, x1, app(ty_Ratio, x2))
new_ltEs19(x0, x1, ty_Float)
new_esEs23(x0, x1, ty_Ordering)
new_ltEs18(x0, x1, ty_Char)
new_esEs8(False, True)
new_esEs8(True, False)
new_lt20(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs5(Just(x0), Just(x1), app(app(ty_@2, x2), x3))
new_ltEs15(Right(x0), Right(x1), x2, ty_Char)
new_esEs24(x0, x1, app(ty_[], x2))
new_esEs16(x0, x1)
new_lt20(x0, x1, ty_@0)
new_esEs26(x0, x1, ty_Bool)
new_ltEs15(Left(x0), Left(x1), ty_Int, x2)
new_esEs7(Right(x0), Right(x1), x2, ty_@0)
new_compare9(x0, x1, app(app(ty_@2, x2), x3))
new_compare0([], [], x0)
new_primMulNat0(Zero, Succ(x0))
new_esEs8(False, False)
new_esEs5(Just(x0), Just(x1), ty_Int)
new_ltEs18(x0, x1, ty_Ordering)
new_esEs7(Right(x0), Right(x1), x2, app(ty_Maybe, x3))
new_primPlusNat0(Succ(x0), Zero)
new_lt4(x0, x1, app(ty_Maybe, x2))
new_ltEs18(x0, x1, ty_@0)
new_esEs19(x0, x1, ty_Double)
new_lt19(x0, x1, app(ty_Ratio, x2))
new_esEs24(x0, x1, ty_Bool)
new_esEs19(x0, x1, app(ty_Ratio, x2))
new_compare19(Double(x0, x1), Double(x2, x3))
new_compare9(x0, x1, app(ty_[], x2))
new_esEs12(EQ, LT)
new_esEs12(LT, EQ)
new_lt20(x0, x1, app(app(ty_Either, x2), x3))
new_esEs19(x0, x1, app(ty_Maybe, x2))
new_ltEs15(Right(x0), Right(x1), x2, app(app(ty_Either, x3), x4))
new_compare10(x0, x1, True)
new_ltEs19(x0, x1, app(app(ty_@2, x2), x3))
new_esEs7(Left(x0), Right(x1), x2, x3)
new_esEs7(Right(x0), Left(x1), x2, x3)
new_esEs7(Right(x0), Right(x1), x2, ty_Double)
new_esEs12(EQ, EQ)
new_primPlusNat0(Zero, Zero)
new_lt8(x0, x1, x2)
new_lt20(x0, x1, ty_Float)
new_esEs25(x0, x1, ty_Double)
new_compare29(x0, x1, True, x2, x3, x4)
new_esEs22(x0, x1, ty_Double)
new_esEs18(x0, x1, ty_Integer)
new_ltEs5(Just(x0), Just(x1), ty_Bool)
new_esEs23(x0, x1, ty_@0)
new_ltEs5(Just(x0), Just(x1), app(ty_Ratio, x2))
new_lt20(x0, x1, ty_Int)
new_esEs25(x0, x1, ty_Integer)
new_esEs24(x0, x1, ty_Double)
new_primCmpInt(Neg(Zero), Neg(Zero))
new_lt21(x0, x1, ty_Double)
new_lt4(x0, x1, ty_Ordering)
new_esEs25(x0, x1, app(app(ty_Either, x2), x3))
new_esEs27(x0, x1, ty_Integer)
new_esEs7(Left(x0), Left(x1), app(ty_Maybe, x2), x3)
new_esEs25(x0, x1, ty_Bool)
new_esEs5(Nothing, Just(x0), x1)
new_esEs24(x0, x1, app(app(ty_Either, x2), x3))
new_compare25(x0, x1)
new_esEs7(Left(x0), Left(x1), ty_Ordering, x2)
new_esEs27(x0, x1, ty_@0)
new_primEqNat0(Succ(x0), Succ(x1))
new_lt21(x0, x1, app(app(ty_Either, x2), x3))
new_esEs24(x0, x1, ty_@0)
new_ltEs20(x0, x1, app(ty_Maybe, x2))
new_esEs18(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs18(x0, x1, app(ty_[], x2))
new_esEs12(LT, GT)
new_esEs12(GT, LT)
new_esEs7(Right(x0), Right(x1), x2, ty_Integer)
new_ltEs15(Right(x0), Right(x1), x2, ty_Float)
new_primCmpInt(Neg(Succ(x0)), Neg(Zero))
new_compare18(x0, x1, x2, x3)
new_ltEs20(x0, x1, app(ty_Ratio, x2))
new_lt18(x0, x1)
new_esEs11(:%(x0, x1), :%(x2, x3), x4)
new_esEs27(x0, x1, ty_Char)
new_esEs23(x0, x1, ty_Double)
new_esEs7(Right(x0), Right(x1), x2, ty_Bool)
new_compare9(x0, x1, ty_Char)
new_ltEs18(x0, x1, ty_Float)
new_esEs7(Left(x0), Left(x1), ty_Integer, x2)
new_esEs18(x0, x1, ty_@0)
new_lt20(x0, x1, app(ty_Ratio, x2))
new_ltEs15(Left(x0), Left(x1), ty_Double, x2)
new_lt13(x0, x1, x2)
new_compare6(Integer(x0), Integer(x1))
new_esEs25(x0, x1, app(ty_Ratio, x2))
new_esEs29(x0, x1, ty_Char)
new_ltEs20(x0, x1, ty_Int)
new_esEs10([], [], x0)
new_compare28(x0, x1, False, x2, x3)
new_primEqInt(Pos(Zero), Neg(Zero))
new_primEqInt(Neg(Zero), Pos(Zero))
new_lt4(x0, x1, app(app(ty_Either, x2), x3))
new_esEs5(Just(x0), Just(x1), app(ty_[], x2))
new_compare111(x0, x1, True)
new_ltEs19(x0, x1, ty_Ordering)
new_esEs25(x0, x1, ty_Char)
new_lt21(x0, x1, ty_Bool)
new_esEs29(x0, x1, ty_Bool)
new_ltEs19(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs18(x0, x1, ty_Int)
new_lt21(x0, x1, app(ty_Maybe, x2))
new_primMulInt(Neg(x0), Pos(x1))
new_primMulInt(Pos(x0), Neg(x1))
new_esEs18(x0, x1, ty_Char)
new_esEs24(x0, x1, ty_Float)
new_fsEs(x0)
new_ltEs19(x0, x1, app(ty_Ratio, x2))
new_lt19(x0, x1, ty_Bool)
new_ltEs8(EQ, LT)
new_ltEs8(LT, EQ)
new_lt9(x0, x1, x2)
new_compare26(@2(x0, x1), @2(x2, x3), False, x4, x5)
new_lt19(x0, x1, app(ty_Maybe, x2))
new_lt20(x0, x1, ty_Integer)
new_lt21(x0, x1, ty_@0)
new_primCmpInt(Pos(Zero), Pos(Zero))
new_lt21(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs15(Left(x0), Left(x1), app(app(ty_Either, x2), x3), x4)
new_ltEs20(x0, x1, app(app(ty_@2, x2), x3))
new_esEs7(Left(x0), Left(x1), ty_Int, x2)
new_esEs28(x0, x1, app(app(ty_Either, x2), x3))
new_primEqInt(Neg(Zero), Neg(Zero))
new_compare14(@0, @0)
new_esEs10(:(x0, x1), [], x2)
new_esEs23(x0, x1, app(ty_[], x2))
new_ltEs15(Right(x0), Right(x1), x2, ty_Int)
new_compare114(x0, x1, True, x2, x3, x4)
new_esEs27(x0, x1, ty_Int)
new_esEs18(x0, x1, app(ty_Maybe, x2))
new_lt21(x0, x1, ty_Ordering)
new_esEs22(x0, x1, ty_Float)
new_ltEs14(@3(x0, x1, x2), @3(x3, x4, x5), x6, x7, x8)
new_ltEs5(Nothing, Just(x0), x1)
new_ltEs15(Left(x0), Left(x1), ty_@0, x2)
new_esEs29(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_lt4(x0, x1, ty_Int)
new_lt4(x0, x1, ty_Integer)
new_ltEs5(Just(x0), Just(x1), ty_Double)
new_esEs19(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs10([], :(x0, x1), x2)
new_esEs18(x0, x1, app(ty_Ratio, x2))
new_esEs26(x0, x1, app(app(ty_Either, x2), x3))
new_lt4(x0, x1, ty_Double)
new_compare210(x0, x1, True)
new_primCmpInt(Pos(Succ(x0)), Pos(Zero))
new_lt20(x0, x1, ty_Bool)
new_ltEs18(x0, x1, app(ty_Ratio, x2))
new_esEs7(Right(x0), Right(x1), x2, ty_Ordering)
new_esEs22(x0, x1, app(ty_Ratio, x2))
new_esEs7(Left(x0), Left(x1), ty_Double, x2)
new_esEs19(x0, x1, ty_Float)
new_ltEs5(Just(x0), Just(x1), ty_Ordering)
new_esEs7(Right(x0), Right(x1), x2, app(app(ty_Either, x3), x4))
new_esEs28(x0, x1, ty_Char)
new_compare9(x0, x1, app(ty_Maybe, x2))
new_esEs18(x0, x1, ty_Float)
new_primCmpNat0(Succ(x0), Succ(x1))
new_compare9(x0, x1, app(ty_Ratio, x2))
new_compare9(x0, x1, ty_@0)
new_pePe(True, x0)
new_lt14(x0, x1)
new_esEs28(x0, x1, app(ty_Ratio, x2))
new_primMulNat0(Succ(x0), Succ(x1))
new_lt4(x0, x1, ty_@0)
new_lt10(x0, x1)
new_esEs23(x0, x1, app(ty_Maybe, x2))
new_primCmpNat0(Succ(x0), Zero)
new_esEs23(x0, x1, ty_Float)
new_esEs24(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs15(Left(x0), Left(x1), ty_Bool, x2)
new_esEs22(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_lt19(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs7(Right(x0), Right(x1), x2, app(ty_[], x3))
new_esEs22(x0, x1, ty_Integer)
new_lt4(x0, x1, ty_Bool)
new_ltEs8(LT, LT)
new_lt19(x0, x1, ty_Float)
new_ltEs20(x0, x1, ty_Char)
new_primCompAux00(x0, GT)
new_sr(Integer(x0), Integer(x1))
new_primCmpNat0(Zero, Zero)
new_esEs18(x0, x1, ty_Double)
new_ltEs4(x0, x1)
new_compare11(x0, x1, False, x2)
new_compare114(x0, x1, False, x2, x3, x4)
new_esEs29(x0, x1, ty_Double)
new_lt19(x0, x1, app(ty_[], x2))
new_ltEs8(GT, GT)
new_esEs18(x0, x1, app(ty_[], x2))
new_esEs7(Left(x0), Left(x1), ty_Float, x2)
new_esEs17(Integer(x0), Integer(x1))
new_compare27(x0, x1, False)
new_compare7(x0, x1)
new_compare111(x0, x1, False)
new_esEs25(x0, x1, app(app(ty_@2, x2), x3))
new_esEs27(x0, x1, ty_Ordering)
new_ltEs15(Left(x0), Left(x1), ty_Integer, x2)
new_primEqNat0(Zero, Succ(x0))
new_esEs29(x0, x1, ty_Ordering)
new_ltEs16(x0, x1)
new_esEs22(x0, x1, ty_Int)
new_esEs15(Float(x0, x1), Float(x2, x3))
new_ltEs19(x0, x1, app(ty_[], x2))
new_esEs5(Just(x0), Just(x1), ty_Bool)
new_esEs5(Just(x0), Just(x1), app(ty_Ratio, x2))
new_ltEs20(x0, x1, ty_Ordering)
new_ltEs18(x0, x1, ty_Int)
new_primMulNat0(Succ(x0), Zero)
new_ltEs8(LT, GT)
new_ltEs8(GT, LT)
new_esEs7(Right(x0), Right(x1), x2, ty_Char)
new_ltEs18(x0, x1, app(app(ty_@2, x2), x3))
new_lt20(x0, x1, ty_Char)
new_esEs25(x0, x1, ty_@0)
new_esEs5(Just(x0), Just(x1), ty_Float)
new_esEs7(Right(x0), Right(x1), x2, app(ty_Ratio, x3))
new_ltEs20(x0, x1, ty_Double)
new_ltEs7(x0, x1)
new_esEs26(x0, x1, app(app(ty_@2, x2), x3))
new_compare13(x0, x1)
new_primMulInt(Neg(x0), Neg(x1))
new_esEs7(Left(x0), Left(x1), ty_Bool, x2)
new_ltEs12(@2(x0, x1), @2(x2, x3), x4, x5)
new_esEs26(x0, x1, ty_Integer)
new_not(True)
new_primCmpInt(Pos(Zero), Pos(Succ(x0)))
new_primCmpInt(Pos(Succ(x0)), Pos(Succ(x1)))
new_lt4(x0, x1, ty_Float)
new_lt19(x0, x1, ty_Char)
new_esEs23(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs24(x0, x1, ty_Char)
new_esEs5(Just(x0), Just(x1), app(app(app(ty_@3, x2), x3), x4))
new_ltEs15(Right(x0), Right(x1), x2, ty_Ordering)
new_lt4(x0, x1, app(app(ty_@2, x2), x3))
new_primCmpInt(Neg(Zero), Pos(Zero))
new_primCmpInt(Pos(Zero), Neg(Zero))
new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1)))
new_not(False)
new_esEs6(@3(x0, x1, x2), @3(x3, x4, x5), x6, x7, x8)
new_esEs29(x0, x1, ty_Integer)
new_lt19(x0, x1, ty_@0)
new_sr0(x0, x1)
new_ltEs5(Just(x0), Just(x1), app(ty_[], x2))
new_primCmpInt(Neg(Zero), Neg(Succ(x0)))
new_ltEs17(False, True)
new_ltEs17(True, False)
new_esEs7(Left(x0), Left(x1), app(ty_Ratio, x2), x3)
new_ltEs15(Left(x0), Left(x1), app(app(ty_@2, x2), x3), x4)
new_lt4(x0, x1, app(ty_[], x2))
new_esEs19(x0, x1, ty_@0)
new_asAs(True, x0)
new_compare12(Char(x0), Char(x1))
new_compare9(x0, x1, ty_Ordering)
new_lt21(x0, x1, ty_Integer)
new_esEs5(Just(x0), Just(x1), ty_@0)
new_esEs5(Nothing, Nothing, x0)
new_ltEs19(x0, x1, ty_Bool)
new_lt19(x0, x1, ty_Integer)
new_ltEs5(Just(x0), Nothing, x1)
new_esEs5(Just(x0), Just(x1), ty_Double)
new_compare110(x0, x1, x2, x3, False, x4, x5, x6)
new_ltEs15(Right(x0), Right(x1), x2, app(ty_Ratio, x3))
new_ltEs19(x0, x1, ty_Int)
new_ltEs5(Just(x0), Just(x1), app(app(ty_Either, x2), x3))
new_ltEs5(Just(x0), Just(x1), app(app(app(ty_@3, x2), x3), x4))
new_esEs20(x0, x1, ty_Integer)
new_esEs28(x0, x1, app(ty_[], x2))
new_primCompAux0(x0, x1, x2, x3)
new_ltEs6(x0, x1)
new_primPlusNat1(Succ(x0), x1)
new_ltEs15(Right(x0), Right(x1), x2, ty_@0)
new_compare29(x0, x1, False, x2, x3, x4)
new_compare9(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs7(Left(x0), Left(x1), app(ty_[], x2), x3)
new_ltEs8(GT, EQ)
new_ltEs8(EQ, GT)
new_esEs23(x0, x1, ty_Int)
new_esEs5(Just(x0), Just(x1), app(app(ty_Either, x2), x3))
new_esEs22(x0, x1, app(app(ty_Either, x2), x3))
new_esEs27(x0, x1, app(ty_Maybe, x2))
new_esEs23(x0, x1, app(app(ty_@2, x2), x3))
new_lt11(x0, x1, x2, x3)
new_esEs18(x0, x1, ty_Ordering)
new_compare113(x0, x1, True, x2, x3)
new_ltEs9(x0, x1, x2)
new_compare112(x0, x1, x2, x3, False, x4, x5)
new_esEs25(x0, x1, ty_Int)
new_esEs29(x0, x1, app(app(ty_@2, x2), x3))
new_esEs28(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_lt20(x0, x1, ty_Double)
new_ltEs15(Right(x0), Right(x1), x2, app(app(app(ty_@3, x3), x4), x5))
new_primEqNat0(Succ(x0), Zero)
new_esEs28(x0, x1, ty_Double)
new_esEs18(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare24(x0, x1, False, x2)
new_esEs19(x0, x1, app(ty_[], x2))
new_primEqInt(Pos(Zero), Pos(Zero))
new_primPlusNat0(Zero, Succ(x0))
new_esEs5(Just(x0), Nothing, x1)
new_primCompAux00(x0, EQ)
new_primEqInt(Neg(Succ(x0)), Pos(x1))
new_primEqInt(Pos(Succ(x0)), Neg(x1))
new_esEs23(x0, x1, app(ty_Ratio, x2))
new_esEs25(x0, x1, app(ty_Maybe, x2))
new_ltEs19(x0, x1, ty_Double)
new_esEs28(x0, x1, ty_Integer)
new_esEs19(x0, x1, ty_Bool)
new_lt19(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs13(x0, x1)
new_compare0(:(x0, x1), :(x2, x3), x4)
new_compare0(:(x0, x1), [], x2)
new_ltEs19(x0, x1, app(ty_Maybe, x2))
new_esEs23(x0, x1, ty_Bool)
new_ltEs18(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs5(Just(x0), Just(x1), ty_Int)
new_esEs24(x0, x1, ty_Integer)
new_esEs29(x0, x1, app(ty_Ratio, x2))
new_esEs29(x0, x1, app(ty_[], x2))
new_lt20(x0, x1, app(app(ty_@2, x2), x3))
new_esEs25(x0, x1, app(ty_[], x2))
new_ltEs20(x0, x1, ty_Integer)
new_esEs22(x0, x1, ty_@0)
new_esEs12(LT, LT)
new_ltEs15(Left(x0), Left(x1), ty_Float, x2)
new_esEs22(x0, x1, app(app(ty_@2, x2), x3))
new_esEs7(Left(x0), Left(x1), ty_@0, x2)
new_compare9(x0, x1, ty_Int)
new_lt7(x0, x1)
new_ltEs5(Just(x0), Just(x1), ty_Char)
new_esEs28(x0, x1, ty_Ordering)
new_ltEs15(Right(x0), Right(x1), x2, ty_Integer)
new_esEs7(Right(x0), Right(x1), x2, ty_Float)
new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1)))
new_ltEs5(Nothing, Nothing, x0)
new_compare17(x0, x1, x2, x3, x4)
new_esEs24(x0, x1, app(ty_Maybe, x2))

We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_deleteMin(xwv200, xwv201, xwv202, Branch(xwv2030, xwv2031, xwv2032, xwv2033, xwv2034), xwv204, h, ba, bb) → new_deleteMin(xwv2030, xwv2031, xwv2032, xwv2033, xwv2034, h, ba, bb)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof
                                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_deleteMax(xwv190, xwv191, xwv192, xwv193, Branch(xwv1940, xwv1941, xwv1942, xwv1943, xwv1944), h, ba, bb) → new_deleteMax(xwv1940, xwv1941, xwv1942, xwv1943, xwv1944, h, ba, bb)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ IFR
            ↳ HASKELL
              ↳ BR
                ↳ HASKELL
                  ↳ COR
                    ↳ HASKELL
                      ↳ LetRed
                        ↳ HASKELL
                          ↳ NumRed
                            ↳ HASKELL
                              ↳ Narrow
                                ↳ AND
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
                                  ↳ QDP
QDP
                                    ↳ QDPSizeChangeProof

Q DP problem:
The TRS P consists of the following rules:

new_delFromFM2(xwv15, xwv16, xwv17, xwv18, xwv19, xwv20, xwv21, xwv22, True, h, ba, bb) → new_delFromFM(xwv20, @2(xwv21, xwv22), h, ba, bb)
new_delFromFM2(xwv15, xwv16, xwv17, xwv18, xwv19, xwv20, xwv21, xwv22, False, h, ba, bb) → new_delFromFM1(xwv15, xwv16, xwv17, xwv18, xwv19, xwv20, xwv21, xwv22, new_esEs12(new_compare26(@2(xwv21, xwv22), @2(xwv15, xwv16), new_esEs4(@2(xwv21, xwv22), @2(xwv15, xwv16), h, ba), h, ba), LT), h, ba, bb)
new_delFromFM(Branch(@2(xwv300, xwv301), xwv31, xwv32, xwv33, xwv34), @2(xwv40, xwv41), bc, bd, be) → new_delFromFM2(xwv300, xwv301, xwv31, xwv32, xwv33, xwv34, xwv40, xwv41, new_esEs30(xwv40, xwv41, xwv300, xwv301, new_esEs31(xwv40, xwv300, bc), bc, bd), bc, bd, be)
new_delFromFM1(xwv15, xwv16, xwv17, xwv18, xwv19, xwv20, xwv21, xwv22, True, h, ba, bb) → new_delFromFM(xwv19, @2(xwv21, xwv22), h, ba, bb)

The TRS R consists of the following rules:

new_esEs28(xwv401, xwv3001, ty_Integer) → new_esEs17(xwv401, xwv3001)
new_esEs29(xwv400, xwv3000, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_compare9(xwv4400, xwv4600, ty_Double) → new_compare19(xwv4400, xwv4600)
new_esEs23(xwv4410, xwv4610, app(app(ty_Either, cda), cdb)) → new_esEs7(xwv4410, xwv4610, cda, cdb)
new_esEs29(xwv400, xwv3000, ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs7(Left(xwv400), Left(xwv3000), app(app(ty_Either, beh), bfa), bee) → new_esEs7(xwv400, xwv3000, beh, bfa)
new_ltEs7(xwv441, xwv461) → new_fsEs(new_compare12(xwv441, xwv461))
new_compare18(xwv440, xwv460, bbf, bbg) → new_compare28(xwv440, xwv460, new_esEs7(xwv440, xwv460, bbf, bbg), bbf, bbg)
new_ltEs17(False, False) → True
new_esEs5(Just(xwv400), Just(xwv3000), ty_Integer) → new_esEs17(xwv400, xwv3000)
new_compare9(xwv4400, xwv4600, ty_Bool) → new_compare25(xwv4400, xwv4600)
new_lt15(xwv440, xwv460, bbc, bbd, bbe) → new_esEs12(new_compare17(xwv440, xwv460, bbc, bbd, bbe), LT)
new_ltEs19(xwv4412, xwv4612, app(ty_[], bhe)) → new_ltEs9(xwv4412, xwv4612, bhe)
new_compare5(:%(xwv4400, xwv4401), :%(xwv4600, xwv4601), ty_Int) → new_compare7(new_sr0(xwv4400, xwv4601), new_sr0(xwv4600, xwv4401))
new_esEs29(xwv400, xwv3000, ty_@0) → new_esEs13(xwv400, xwv3000)
new_esEs23(xwv4410, xwv4610, app(app(ty_@2, ccc), ccd)) → new_esEs4(xwv4410, xwv4610, ccc, ccd)
new_esEs29(xwv400, xwv3000, ty_Double) → new_esEs14(xwv400, xwv3000)
new_esEs26(xwv400, xwv3000, ty_Double) → new_esEs14(xwv400, xwv3000)
new_ltEs20(xwv4411, xwv4611, ty_Int) → new_ltEs4(xwv4411, xwv4611)
new_esEs24(xwv402, xwv3002, ty_Char) → new_esEs9(xwv402, xwv3002)
new_compare110(xwv104, xwv105, xwv106, xwv107, True, xwv109, bhc, bhd) → new_compare112(xwv104, xwv105, xwv106, xwv107, True, bhc, bhd)
new_esEs19(xwv440, xwv460, ty_Float) → new_esEs15(xwv440, xwv460)
new_lt20(xwv4410, xwv4610, ty_Float) → new_lt14(xwv4410, xwv4610)
new_lt19(xwv4411, xwv4611, ty_Integer) → new_lt5(xwv4411, xwv4611)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Ordering, bag) → new_ltEs8(xwv4410, xwv4610)
new_lt19(xwv4411, xwv4611, app(ty_Ratio, cah)) → new_lt9(xwv4411, xwv4611, cah)
new_esEs29(xwv400, xwv3000, ty_Bool) → new_esEs8(xwv400, xwv3000)
new_compare112(xwv104, xwv105, xwv106, xwv107, True, bhc, bhd) → LT
new_primMulNat0(Zero, Zero) → Zero
new_esEs5(Just(xwv400), Just(xwv3000), ty_Double) → new_esEs14(xwv400, xwv3000)
new_esEs26(xwv400, xwv3000, ty_Float) → new_esEs15(xwv400, xwv3000)
new_lt20(xwv4410, xwv4610, app(ty_[], cca)) → new_lt8(xwv4410, xwv4610, cca)
new_esEs24(xwv402, xwv3002, ty_@0) → new_esEs13(xwv402, xwv3002)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, ty_Double) → new_esEs14(xwv400, xwv3000)
new_sr(Integer(xwv46000), Integer(xwv44010)) → Integer(new_primMulInt(xwv46000, xwv44010))
new_esEs7(Left(xwv400), Left(xwv3000), ty_Double, bee) → new_esEs14(xwv400, xwv3000)
new_ltEs20(xwv4411, xwv4611, ty_@0) → new_ltEs11(xwv4411, xwv4611)
new_esEs25(xwv401, xwv3001, app(app(ty_@2, cfg), cfh)) → new_esEs4(xwv401, xwv3001, cfg, cfh)
new_esEs22(xwv4411, xwv4611, ty_Char) → new_esEs9(xwv4411, xwv4611)
new_esEs18(xwv400, xwv3000, ty_Char) → new_esEs9(xwv400, xwv3000)
new_lt4(xwv440, xwv460, ty_Char) → new_lt6(xwv440, xwv460)
new_lt20(xwv4410, xwv4610, app(ty_Maybe, cce)) → new_lt13(xwv4410, xwv4610, cce)
new_esEs32(xwv32, xwv34, ty_Float) → new_esEs15(xwv32, xwv34)
new_ltEs18(xwv441, xwv461, ty_Integer) → new_ltEs6(xwv441, xwv461)
new_lt20(xwv4410, xwv4610, app(app(ty_@2, ccc), ccd)) → new_lt11(xwv4410, xwv4610, ccc, ccd)
new_fsEs(xwv117) → new_not(new_esEs12(xwv117, GT))
new_ltEs18(xwv441, xwv461, app(ty_[], hg)) → new_ltEs9(xwv441, xwv461, hg)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, app(ty_[], bga)) → new_esEs10(xwv400, xwv3000, bga)
new_compare9(xwv4400, xwv4600, ty_Integer) → new_compare6(xwv4400, xwv4600)
new_esEs18(xwv400, xwv3000, ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_esEs12(GT, LT) → False
new_esEs12(LT, GT) → False
new_compare16(xwv440, xwv460, ee) → new_compare24(xwv440, xwv460, new_esEs5(xwv440, xwv460, ee), ee)
new_esEs23(xwv4410, xwv4610, ty_@0) → new_esEs13(xwv4410, xwv4610)
new_esEs15(Float(xwv400, xwv401), Float(xwv3000, xwv3001)) → new_esEs16(new_sr0(xwv400, xwv3000), new_sr0(xwv401, xwv3001))
new_esEs26(xwv400, xwv3000, app(ty_[], cgb)) → new_esEs10(xwv400, xwv3000, cgb)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(ty_[], eg)) → new_ltEs9(xwv4410, xwv4610, eg)
new_ltEs20(xwv4411, xwv4611, app(ty_[], dbb)) → new_ltEs9(xwv4411, xwv4611, dbb)
new_compare12(Char(xwv4400), Char(xwv4600)) → new_primCmpNat0(xwv4400, xwv4600)
new_ltEs20(xwv4411, xwv4611, app(app(ty_@2, dbd), dbe)) → new_ltEs12(xwv4411, xwv4611, dbd, dbe)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, app(ty_Ratio, bgb)) → new_esEs11(xwv400, xwv3000, bgb)
new_compare0(:(xwv4400, xwv4401), :(xwv4600, xwv4601), gb) → new_primCompAux0(xwv4400, xwv4600, new_compare0(xwv4401, xwv4601, gb), gb)
new_esEs32(xwv32, xwv34, app(app(ty_@2, dae), daf)) → new_esEs4(xwv32, xwv34, dae, daf)
new_lt19(xwv4411, xwv4611, ty_Int) → new_lt12(xwv4411, xwv4611)
new_esEs5(Just(xwv400), Just(xwv3000), app(ty_Maybe, da)) → new_esEs5(xwv400, xwv3000, da)
new_esEs32(xwv32, xwv34, ty_@0) → new_esEs13(xwv32, xwv34)
new_ltEs8(EQ, EQ) → True
new_esEs25(xwv401, xwv3001, ty_Integer) → new_esEs17(xwv401, xwv3001)
new_ltEs18(xwv441, xwv461, ty_Int) → new_ltEs4(xwv441, xwv461)
new_esEs25(xwv401, xwv3001, ty_Double) → new_esEs14(xwv401, xwv3001)
new_esEs5(Just(xwv400), Just(xwv3000), ty_Char) → new_esEs9(xwv400, xwv3000)
new_esEs28(xwv401, xwv3001, ty_Double) → new_esEs14(xwv401, xwv3001)
new_esEs32(xwv32, xwv34, ty_Integer) → new_esEs17(xwv32, xwv34)
new_lt10(xwv440, xwv460) → new_esEs12(new_compare14(xwv440, xwv460), LT)
new_esEs27(xwv4410, xwv4610, ty_Double) → new_esEs14(xwv4410, xwv4610)
new_esEs22(xwv4411, xwv4611, app(app(ty_Either, cbg), cbh)) → new_esEs7(xwv4411, xwv4611, cbg, cbh)
new_esEs32(xwv32, xwv34, ty_Char) → new_esEs9(xwv32, xwv34)
new_lt5(xwv440, xwv460) → new_esEs12(new_compare6(xwv440, xwv460), LT)
new_esEs17(Integer(xwv400), Integer(xwv3000)) → new_primEqInt(xwv400, xwv3000)
new_lt18(xwv440, xwv460) → new_esEs12(new_compare25(xwv440, xwv460), LT)
new_esEs22(xwv4411, xwv4611, ty_Ordering) → new_esEs12(xwv4411, xwv4611)
new_esEs25(xwv401, xwv3001, app(ty_[], ceh)) → new_esEs10(xwv401, xwv3001, ceh)
new_compare9(xwv4400, xwv4600, app(ty_Maybe, gg)) → new_compare16(xwv4400, xwv4600, gg)
new_pePe(False, xwv129) → xwv129
new_ltEs15(Left(xwv4410), Left(xwv4610), app(app(app(ty_@3, bcf), bcg), bch), bag) → new_ltEs14(xwv4410, xwv4610, bcf, bcg, bch)
new_esEs19(xwv440, xwv460, app(ty_[], gb)) → new_esEs10(xwv440, xwv460, gb)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, ty_@0) → new_ltEs11(xwv4410, xwv4610)
new_esEs7(Right(xwv400), Left(xwv3000), bfh, bee) → False
new_esEs7(Left(xwv400), Right(xwv3000), bfh, bee) → False
new_esEs7(Left(xwv400), Left(xwv3000), app(ty_[], bef), bee) → new_esEs10(xwv400, xwv3000, bef)
new_lt6(xwv440, xwv460) → new_esEs12(new_compare12(xwv440, xwv460), LT)
new_compare19(Double(xwv4400, xwv4401), Double(xwv4600, xwv4601)) → new_compare7(new_sr0(xwv4400, xwv4600), new_sr0(xwv4401, xwv4601))
new_lt21(xwv4410, xwv4610, app(ty_[], dcd)) → new_lt8(xwv4410, xwv4610, dcd)
new_esEs27(xwv4410, xwv4610, app(app(ty_Either, ddd), dde)) → new_esEs7(xwv4410, xwv4610, ddd, dde)
new_esEs20(xwv401, xwv3001, ty_Int) → new_esEs16(xwv401, xwv3001)
new_lt19(xwv4411, xwv4611, app(ty_[], cag)) → new_lt8(xwv4411, xwv4611, cag)
new_esEs29(xwv400, xwv3000, ty_Float) → new_esEs15(xwv400, xwv3000)
new_esEs28(xwv401, xwv3001, ty_@0) → new_esEs13(xwv401, xwv3001)
new_esEs26(xwv400, xwv3000, ty_@0) → new_esEs13(xwv400, xwv3000)
new_esEs22(xwv4411, xwv4611, app(app(ty_@2, cba), cbb)) → new_esEs4(xwv4411, xwv4611, cba, cbb)
new_compare14(@0, @0) → EQ
new_esEs6(@3(xwv400, xwv401, xwv402), @3(xwv3000, xwv3001, xwv3002), cdc, cdd, cde) → new_asAs(new_esEs26(xwv400, xwv3000, cdc), new_asAs(new_esEs25(xwv401, xwv3001, cdd), new_esEs24(xwv402, xwv3002, cde)))
new_ltEs19(xwv4412, xwv4612, ty_Integer) → new_ltEs6(xwv4412, xwv4612)
new_ltEs20(xwv4411, xwv4611, ty_Ordering) → new_ltEs8(xwv4411, xwv4611)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Integer) → new_ltEs6(xwv4410, xwv4610)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, ty_Bool) → new_esEs8(xwv400, xwv3000)
new_ltEs8(EQ, GT) → True
new_esEs19(xwv440, xwv460, app(app(ty_Either, bbf), bbg)) → new_esEs7(xwv440, xwv460, bbf, bbg)
new_ltEs8(GT, GT) → True
new_primCmpInt(Neg(Succ(xwv4400)), Neg(Succ(xwv4600))) → new_primCmpNat0(xwv4600, xwv4400)
new_compare111(xwv440, xwv460, False) → GT
new_compare111(xwv440, xwv460, True) → LT
new_esEs20(xwv401, xwv3001, ty_Integer) → new_esEs17(xwv401, xwv3001)
new_esEs29(xwv400, xwv3000, app(app(ty_@2, dfg), dfh)) → new_esEs4(xwv400, xwv3000, dfg, dfh)
new_ltEs18(xwv441, xwv461, ty_@0) → new_ltEs11(xwv441, xwv461)
new_esEs23(xwv4410, xwv4610, ty_Double) → new_esEs14(xwv4410, xwv4610)
new_primCmpNat0(Zero, Succ(xwv46000)) → LT
new_esEs22(xwv4411, xwv4611, ty_Float) → new_esEs15(xwv4411, xwv4611)
new_lt4(xwv440, xwv460, app(ty_[], gb)) → new_lt8(xwv440, xwv460, gb)
new_lt7(xwv440, xwv460) → new_esEs12(new_compare13(xwv440, xwv460), LT)
new_lt4(xwv440, xwv460, ty_@0) → new_lt10(xwv440, xwv460)
new_esEs31(xwv40, xwv300, app(app(ty_@2, dah), dba)) → new_esEs4(xwv40, xwv300, dah, dba)
new_compare9(xwv4400, xwv4600, app(app(ty_@2, ge), gf)) → new_compare15(xwv4400, xwv4600, ge, gf)
new_compare110(xwv104, xwv105, xwv106, xwv107, False, xwv109, bhc, bhd) → new_compare112(xwv104, xwv105, xwv106, xwv107, xwv109, bhc, bhd)
new_compare114(xwv440, xwv460, False, bbc, bbd, bbe) → GT
new_esEs18(xwv400, xwv3000, ty_@0) → new_esEs13(xwv400, xwv3000)
new_esEs27(xwv4410, xwv4610, ty_Bool) → new_esEs8(xwv4410, xwv4610)
new_esEs24(xwv402, xwv3002, ty_Bool) → new_esEs8(xwv402, xwv3002)
new_esEs31(xwv40, xwv300, app(ty_Maybe, bf)) → new_esEs5(xwv40, xwv300, bf)
new_lt20(xwv4410, xwv4610, app(ty_Ratio, ccb)) → new_lt9(xwv4410, xwv4610, ccb)
new_ltEs8(LT, EQ) → True
new_lt21(xwv4410, xwv4610, app(ty_Ratio, dce)) → new_lt9(xwv4410, xwv4610, dce)
new_esEs11(:%(xwv400, xwv401), :%(xwv3000, xwv3001), bbh) → new_asAs(new_esEs21(xwv400, xwv3000, bbh), new_esEs20(xwv401, xwv3001, bbh))
new_ltEs18(xwv441, xwv461, app(ty_Maybe, ef)) → new_ltEs5(xwv441, xwv461, ef)
new_esEs12(LT, LT) → True
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, ty_Bool) → new_ltEs17(xwv4410, xwv4610)
new_esEs7(Left(xwv400), Left(xwv3000), app(ty_Ratio, beg), bee) → new_esEs11(xwv400, xwv3000, beg)
new_esEs24(xwv402, xwv3002, app(app(ty_Either, cdh), cea)) → new_esEs7(xwv402, xwv3002, cdh, cea)
new_esEs23(xwv4410, xwv4610, ty_Bool) → new_esEs8(xwv4410, xwv4610)
new_compare9(xwv4400, xwv4600, app(ty_Ratio, gd)) → new_compare5(xwv4400, xwv4600, gd)
new_lt19(xwv4411, xwv4611, app(app(ty_@2, cba), cbb)) → new_lt11(xwv4411, xwv4611, cba, cbb)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, ty_Float) → new_esEs15(xwv400, xwv3000)
new_pePe(True, xwv129) → True
new_compare0([], [], gb) → EQ
new_esEs24(xwv402, xwv3002, ty_Int) → new_esEs16(xwv402, xwv3002)
new_primEqNat0(Zero, Zero) → True
new_esEs32(xwv32, xwv34, ty_Double) → new_esEs14(xwv32, xwv34)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, app(ty_Ratio, bdd)) → new_ltEs10(xwv4410, xwv4610, bdd)
new_compare8(Float(xwv4400, xwv4401), Float(xwv4600, xwv4601)) → new_compare7(new_sr0(xwv4400, xwv4600), new_sr0(xwv4401, xwv4601))
new_compare11(xwv440, xwv460, True, ee) → LT
new_lt21(xwv4410, xwv4610, app(app(ty_Either, ddd), dde)) → new_lt16(xwv4410, xwv4610, ddd, dde)
new_primMulNat0(Succ(xwv40000), Succ(xwv300000)) → new_primPlusNat1(new_primMulNat0(xwv40000, Succ(xwv300000)), xwv300000)
new_esEs5(Just(xwv400), Just(xwv3000), app(app(ty_@2, cf), cg)) → new_esEs4(xwv400, xwv3000, cf, cg)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, ty_Integer) → new_ltEs6(xwv4410, xwv4610)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, ty_Char) → new_ltEs7(xwv4410, xwv4610)
new_lt4(xwv440, xwv460, app(ty_Ratio, bah)) → new_lt9(xwv440, xwv460, bah)
new_esEs18(xwv400, xwv3000, ty_Float) → new_esEs15(xwv400, xwv3000)
new_esEs31(xwv40, xwv300, app(ty_[], db)) → new_esEs10(xwv40, xwv300, db)
new_compare9(xwv4400, xwv4600, app(app(app(ty_@3, gh), ha), hb)) → new_compare17(xwv4400, xwv4600, gh, ha, hb)
new_ltEs8(GT, EQ) → False
new_ltEs8(EQ, LT) → False
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, app(app(app(ty_@3, bdh), bea), beb)) → new_ltEs14(xwv4410, xwv4610, bdh, bea, beb)
new_compare9(xwv4400, xwv4600, app(app(ty_Either, hc), hd)) → new_compare18(xwv4400, xwv4600, hc, hd)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, app(app(app(ty_@3, bge), bgf), bgg)) → new_esEs6(xwv400, xwv3000, bge, bgf, bgg)
new_ltEs20(xwv4411, xwv4611, app(app(app(ty_@3, dbg), dbh), dca)) → new_ltEs14(xwv4411, xwv4611, dbg, dbh, dca)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(app(ty_Either, fh), ga)) → new_ltEs15(xwv4410, xwv4610, fh, ga)
new_compare7(xwv44, xwv46) → new_primCmpInt(xwv44, xwv46)
new_esEs8(False, True) → False
new_esEs8(True, False) → False
new_compare114(xwv440, xwv460, True, bbc, bbd, bbe) → LT
new_esEs18(xwv400, xwv3000, app(app(app(ty_@3, dg), dh), ea)) → new_esEs6(xwv400, xwv3000, dg, dh, ea)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, app(app(ty_Either, bgc), bgd)) → new_esEs7(xwv400, xwv3000, bgc, bgd)
new_esEs31(xwv40, xwv300, app(app(ty_Either, bfh), bee)) → new_esEs7(xwv40, xwv300, bfh, bee)
new_lt20(xwv4410, xwv4610, ty_Double) → new_lt17(xwv4410, xwv4610)
new_esEs26(xwv400, xwv3000, app(app(app(ty_@3, cgf), cgg), cgh)) → new_esEs6(xwv400, xwv3000, cgf, cgg, cgh)
new_lt19(xwv4411, xwv4611, app(app(app(ty_@3, cbd), cbe), cbf)) → new_lt15(xwv4411, xwv4611, cbd, cbe, cbf)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(app(ty_@2, fa), fb)) → new_ltEs12(xwv4410, xwv4610, fa, fb)
new_compare29(xwv440, xwv460, True, bbc, bbd, bbe) → EQ
new_esEs25(xwv401, xwv3001, ty_Ordering) → new_esEs12(xwv401, xwv3001)
new_lt4(xwv440, xwv460, ty_Float) → new_lt14(xwv440, xwv460)
new_primEqInt(Neg(Succ(xwv4000)), Neg(Succ(xwv30000))) → new_primEqNat0(xwv4000, xwv30000)
new_esEs24(xwv402, xwv3002, app(ty_Ratio, cdg)) → new_esEs11(xwv402, xwv3002, cdg)
new_ltEs19(xwv4412, xwv4612, ty_Ordering) → new_ltEs8(xwv4412, xwv4612)
new_ltEs18(xwv441, xwv461, app(ty_Ratio, hh)) → new_ltEs10(xwv441, xwv461, hh)
new_esEs22(xwv4411, xwv4611, app(app(app(ty_@3, cbd), cbe), cbf)) → new_esEs6(xwv4411, xwv4611, cbd, cbe, cbf)
new_compare113(xwv440, xwv460, True, bbf, bbg) → LT
new_ltEs5(Just(xwv4410), Nothing, ef) → False
new_lt20(xwv4410, xwv4610, ty_Char) → new_lt6(xwv4410, xwv4610)
new_esEs16(xwv40, xwv300) → new_primEqInt(xwv40, xwv300)
new_ltEs17(True, False) → False
new_ltEs16(xwv441, xwv461) → new_fsEs(new_compare19(xwv441, xwv461))
new_esEs12(EQ, LT) → False
new_esEs12(LT, EQ) → False
new_esEs19(xwv440, xwv460, app(ty_Ratio, bah)) → new_esEs11(xwv440, xwv460, bah)
new_compare9(xwv4400, xwv4600, ty_Char) → new_compare12(xwv4400, xwv4600)
new_esEs32(xwv32, xwv34, app(ty_Ratio, chg)) → new_esEs11(xwv32, xwv34, chg)
new_primEqInt(Neg(Zero), Neg(Zero)) → True
new_esEs31(xwv40, xwv300, app(app(app(ty_@3, cdc), cdd), cde)) → new_esEs6(xwv40, xwv300, cdc, cdd, cde)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Double) → new_ltEs16(xwv4410, xwv4610)
new_esEs24(xwv402, xwv3002, app(app(app(ty_@3, ceb), cec), ced)) → new_esEs6(xwv402, xwv3002, ceb, cec, ced)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(ty_Ratio, eh)) → new_ltEs10(xwv4410, xwv4610, eh)
new_lt20(xwv4410, xwv4610, ty_Ordering) → new_lt7(xwv4410, xwv4610)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, app(ty_Maybe, bhb)) → new_esEs5(xwv400, xwv3000, bhb)
new_compare15(xwv440, xwv460, bba, bbb) → new_compare26(xwv440, xwv460, new_esEs4(xwv440, xwv460, bba, bbb), bba, bbb)
new_esEs28(xwv401, xwv3001, ty_Int) → new_esEs16(xwv401, xwv3001)
new_primEqInt(Neg(Succ(xwv4000)), Neg(Zero)) → False
new_primEqInt(Neg(Zero), Neg(Succ(xwv30000))) → False
new_esEs32(xwv32, xwv34, app(ty_[], chf)) → new_esEs10(xwv32, xwv34, chf)
new_compare26(xwv44, xwv46, True, he, hf) → EQ
new_primPlusNat1(Zero, xwv300000) → Succ(xwv300000)
new_lt20(xwv4410, xwv4610, ty_@0) → new_lt10(xwv4410, xwv4610)
new_lt21(xwv4410, xwv4610, ty_Float) → new_lt14(xwv4410, xwv4610)
new_esEs23(xwv4410, xwv4610, ty_Integer) → new_esEs17(xwv4410, xwv4610)
new_lt12(xwv440, xwv460) → new_esEs12(new_compare7(xwv440, xwv460), LT)
new_lt13(xwv440, xwv460, ee) → new_esEs12(new_compare16(xwv440, xwv460, ee), LT)
new_esEs5(Just(xwv400), Just(xwv3000), ty_Bool) → new_esEs8(xwv400, xwv3000)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, ty_Char) → new_esEs9(xwv400, xwv3000)
new_esEs26(xwv400, xwv3000, app(app(ty_Either, cgd), cge)) → new_esEs7(xwv400, xwv3000, cgd, cge)
new_ltEs18(xwv441, xwv461, ty_Double) → new_ltEs16(xwv441, xwv461)
new_compare210(xwv440, xwv460, False) → new_compare10(xwv440, xwv460, new_ltEs8(xwv440, xwv460))
new_primCmpInt(Pos(Zero), Neg(Zero)) → EQ
new_primCmpInt(Neg(Zero), Pos(Zero)) → EQ
new_esEs10(:(xwv400, xwv401), [], db) → False
new_esEs10([], :(xwv3000, xwv3001), db) → False
new_esEs27(xwv4410, xwv4610, ty_Float) → new_esEs15(xwv4410, xwv4610)
new_ltEs19(xwv4412, xwv4612, ty_@0) → new_ltEs11(xwv4412, xwv4612)
new_primCmpNat0(Succ(xwv44000), Succ(xwv46000)) → new_primCmpNat0(xwv44000, xwv46000)
new_lt19(xwv4411, xwv4611, app(app(ty_Either, cbg), cbh)) → new_lt16(xwv4411, xwv4611, cbg, cbh)
new_compare11(xwv440, xwv460, False, ee) → GT
new_esEs26(xwv400, xwv3000, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_esEs18(xwv400, xwv3000, ty_Double) → new_esEs14(xwv400, xwv3000)
new_primEqInt(Pos(Succ(xwv4000)), Pos(Succ(xwv30000))) → new_primEqNat0(xwv4000, xwv30000)
new_compare29(xwv440, xwv460, False, bbc, bbd, bbe) → new_compare114(xwv440, xwv460, new_ltEs14(xwv440, xwv460, bbc, bbd, bbe), bbc, bbd, bbe)
new_esEs25(xwv401, xwv3001, app(ty_Maybe, cga)) → new_esEs5(xwv401, xwv3001, cga)
new_esEs18(xwv400, xwv3000, ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs32(xwv32, xwv34, app(app(ty_Either, chh), daa)) → new_esEs7(xwv32, xwv34, chh, daa)
new_esEs29(xwv400, xwv3000, app(ty_Maybe, dga)) → new_esEs5(xwv400, xwv3000, dga)
new_compare9(xwv4400, xwv4600, app(ty_[], gc)) → new_compare0(xwv4400, xwv4600, gc)
new_ltEs18(xwv441, xwv461, app(app(ty_Either, baf), bag)) → new_ltEs15(xwv441, xwv461, baf, bag)
new_esEs8(False, False) → True
new_esEs10([], [], db) → True
new_ltEs19(xwv4412, xwv4612, app(ty_Ratio, bhf)) → new_ltEs10(xwv4412, xwv4612, bhf)
new_primEqNat0(Succ(xwv4000), Succ(xwv30000)) → new_primEqNat0(xwv4000, xwv30000)
new_esEs27(xwv4410, xwv4610, ty_Integer) → new_esEs17(xwv4410, xwv4610)
new_esEs26(xwv400, xwv3000, ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_lt4(xwv440, xwv460, app(ty_Maybe, ee)) → new_lt13(xwv440, xwv460, ee)
new_esEs30(xwv31, xwv32, xwv33, xwv34, True, chd, che) → new_esEs12(new_compare26(@2(xwv31, xwv32), @2(xwv33, xwv34), new_esEs32(xwv32, xwv34, che), chd, che), GT)
new_esEs19(xwv440, xwv460, app(app(app(ty_@3, bbc), bbd), bbe)) → new_esEs6(xwv440, xwv460, bbc, bbd, bbe)
new_lt21(xwv4410, xwv4610, ty_Char) → new_lt6(xwv4410, xwv4610)
new_esEs18(xwv400, xwv3000, app(ty_[], dc)) → new_esEs10(xwv400, xwv3000, dc)
new_esEs29(xwv400, xwv3000, ty_Char) → new_esEs9(xwv400, xwv3000)
new_compare113(xwv440, xwv460, False, bbf, bbg) → GT
new_ltEs5(Just(xwv4410), Just(xwv4610), app(app(app(ty_@3, fd), ff), fg)) → new_ltEs14(xwv4410, xwv4610, fd, ff, fg)
new_primCompAux00(xwv136, LT) → LT
new_ltEs15(Left(xwv4410), Left(xwv4610), app(app(ty_@2, bcc), bcd), bag) → new_ltEs12(xwv4410, xwv4610, bcc, bcd)
new_esEs18(xwv400, xwv3000, app(ty_Ratio, dd)) → new_esEs11(xwv400, xwv3000, dd)
new_esEs26(xwv400, xwv3000, app(app(ty_@2, cha), chb)) → new_esEs4(xwv400, xwv3000, cha, chb)
new_esEs12(EQ, EQ) → True
new_ltEs18(xwv441, xwv461, app(app(ty_@2, baa), bab)) → new_ltEs12(xwv441, xwv461, baa, bab)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Int, bee) → new_esEs16(xwv400, xwv3000)
new_esEs25(xwv401, xwv3001, ty_Char) → new_esEs9(xwv401, xwv3001)
new_primEqInt(Pos(Succ(xwv4000)), Pos(Zero)) → False
new_primEqInt(Pos(Zero), Pos(Succ(xwv30000))) → False
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_@0) → new_ltEs11(xwv4410, xwv4610)
new_ltEs5(Nothing, Just(xwv4610), ef) → True
new_compare24(xwv440, xwv460, False, ee) → new_compare11(xwv440, xwv460, new_ltEs5(xwv440, xwv460, ee), ee)
new_lt4(xwv440, xwv460, app(app(ty_Either, bbf), bbg)) → new_lt16(xwv440, xwv460, bbf, bbg)
new_compare5(:%(xwv4400, xwv4401), :%(xwv4600, xwv4601), ty_Integer) → new_compare6(new_sr(xwv4400, xwv4601), new_sr(xwv4600, xwv4401))
new_primPlusNat0(Succ(xwv19200), Zero) → Succ(xwv19200)
new_primPlusNat0(Zero, Succ(xwv9100)) → Succ(xwv9100)
new_esEs24(xwv402, xwv3002, ty_Float) → new_esEs15(xwv402, xwv3002)
new_lt4(xwv440, xwv460, ty_Double) → new_lt17(xwv440, xwv460)
new_primCmpNat0(Zero, Zero) → EQ
new_esEs22(xwv4411, xwv4611, ty_Bool) → new_esEs8(xwv4411, xwv4611)
new_primCmpNat0(Succ(xwv44000), Zero) → GT
new_ltEs13(xwv441, xwv461) → new_fsEs(new_compare8(xwv441, xwv461))
new_esEs19(xwv440, xwv460, ty_@0) → new_esEs13(xwv440, xwv460)
new_primCmpInt(Neg(Zero), Pos(Succ(xwv4600))) → LT
new_compare6(Integer(xwv4400), Integer(xwv4600)) → new_primCmpInt(xwv4400, xwv4600)
new_ltEs19(xwv4412, xwv4612, app(app(ty_@2, bhg), bhh)) → new_ltEs12(xwv4412, xwv4612, bhg, bhh)
new_ltEs20(xwv4411, xwv4611, ty_Integer) → new_ltEs6(xwv4411, xwv4611)
new_lt21(xwv4410, xwv4610, app(app(ty_@2, dcf), dcg)) → new_lt11(xwv4410, xwv4610, dcf, dcg)
new_compare28(xwv440, xwv460, True, bbf, bbg) → EQ
new_ltEs19(xwv4412, xwv4612, ty_Double) → new_ltEs16(xwv4412, xwv4612)
new_primEqInt(Pos(Succ(xwv4000)), Neg(xwv3000)) → False
new_primEqInt(Neg(Succ(xwv4000)), Pos(xwv3000)) → False
new_esEs32(xwv32, xwv34, app(ty_Maybe, dag)) → new_esEs5(xwv32, xwv34, dag)
new_esEs24(xwv402, xwv3002, app(app(ty_@2, cee), cef)) → new_esEs4(xwv402, xwv3002, cee, cef)
new_esEs25(xwv401, xwv3001, app(ty_Ratio, cfa)) → new_esEs11(xwv401, xwv3001, cfa)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Integer, bee) → new_esEs17(xwv400, xwv3000)
new_esEs25(xwv401, xwv3001, ty_@0) → new_esEs13(xwv401, xwv3001)
new_esEs27(xwv4410, xwv4610, app(ty_Maybe, dch)) → new_esEs5(xwv4410, xwv4610, dch)
new_esEs18(xwv400, xwv3000, app(app(ty_@2, eb), ec)) → new_esEs4(xwv400, xwv3000, eb, ec)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Float, bee) → new_esEs15(xwv400, xwv3000)
new_lt16(xwv440, xwv460, bbf, bbg) → new_esEs12(new_compare18(xwv440, xwv460, bbf, bbg), LT)
new_esEs27(xwv4410, xwv4610, app(ty_Ratio, dce)) → new_esEs11(xwv4410, xwv4610, dce)
new_esEs5(Just(xwv400), Just(xwv3000), ty_@0) → new_esEs13(xwv400, xwv3000)
new_primCmpInt(Neg(Succ(xwv4400)), Neg(Zero)) → LT
new_primEqInt(Pos(Zero), Neg(Succ(xwv30000))) → False
new_primEqInt(Neg(Zero), Pos(Succ(xwv30000))) → False
new_esEs31(xwv40, xwv300, ty_Integer) → new_esEs17(xwv40, xwv300)
new_esEs31(xwv40, xwv300, ty_Bool) → new_esEs8(xwv40, xwv300)
new_esEs13(@0, @0) → True
new_esEs24(xwv402, xwv3002, ty_Ordering) → new_esEs12(xwv402, xwv3002)
new_primCompAux00(xwv136, EQ) → xwv136
new_primCmpInt(Pos(Zero), Pos(Succ(xwv4600))) → new_primCmpNat0(Zero, Succ(xwv4600))
new_esEs28(xwv401, xwv3001, app(app(ty_Either, ddh), dea)) → new_esEs7(xwv401, xwv3001, ddh, dea)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, ty_@0) → new_esEs13(xwv400, xwv3000)
new_ltEs8(GT, LT) → False
new_esEs25(xwv401, xwv3001, ty_Float) → new_esEs15(xwv401, xwv3001)
new_esEs26(xwv400, xwv3000, ty_Bool) → new_esEs8(xwv400, xwv3000)
new_esEs28(xwv401, xwv3001, ty_Ordering) → new_esEs12(xwv401, xwv3001)
new_compare9(xwv4400, xwv4600, ty_Ordering) → new_compare13(xwv4400, xwv4600)
new_lt21(xwv4410, xwv4610, ty_@0) → new_lt10(xwv4410, xwv4610)
new_not(False) → True
new_esEs7(Left(xwv400), Left(xwv3000), ty_Char, bee) → new_esEs9(xwv400, xwv3000)
new_primCompAux0(xwv4400, xwv4600, xwv130, gb) → new_primCompAux00(xwv130, new_compare9(xwv4400, xwv4600, gb))
new_compare24(xwv440, xwv460, True, ee) → EQ
new_ltEs20(xwv4411, xwv4611, app(ty_Ratio, dbc)) → new_ltEs10(xwv4411, xwv4611, dbc)
new_esEs12(GT, EQ) → False
new_esEs12(EQ, GT) → False
new_compare25(xwv440, xwv460) → new_compare27(xwv440, xwv460, new_esEs8(xwv440, xwv460))
new_lt20(xwv4410, xwv4610, app(app(app(ty_@3, ccf), ccg), cch)) → new_lt15(xwv4410, xwv4610, ccf, ccg, cch)
new_esEs28(xwv401, xwv3001, ty_Char) → new_esEs9(xwv401, xwv3001)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Bool, bee) → new_esEs8(xwv400, xwv3000)
new_lt20(xwv4410, xwv4610, app(app(ty_Either, cda), cdb)) → new_lt16(xwv4410, xwv4610, cda, cdb)
new_compare0(:(xwv4400, xwv4401), [], gb) → GT
new_esEs23(xwv4410, xwv4610, app(ty_Ratio, ccb)) → new_esEs11(xwv4410, xwv4610, ccb)
new_esEs23(xwv4410, xwv4610, app(ty_[], cca)) → new_esEs10(xwv4410, xwv4610, cca)
new_compare13(xwv440, xwv460) → new_compare210(xwv440, xwv460, new_esEs12(xwv440, xwv460))
new_ltEs19(xwv4412, xwv4612, app(app(ty_Either, cae), caf)) → new_ltEs15(xwv4412, xwv4612, cae, caf)
new_esEs24(xwv402, xwv3002, app(ty_Maybe, ceg)) → new_esEs5(xwv402, xwv3002, ceg)
new_lt19(xwv4411, xwv4611, ty_Float) → new_lt14(xwv4411, xwv4611)
new_ltEs20(xwv4411, xwv4611, app(ty_Maybe, dbf)) → new_ltEs5(xwv4411, xwv4611, dbf)
new_compare28(xwv440, xwv460, False, bbf, bbg) → new_compare113(xwv440, xwv460, new_ltEs15(xwv440, xwv460, bbf, bbg), bbf, bbg)
new_lt19(xwv4411, xwv4611, ty_Char) → new_lt6(xwv4411, xwv4611)
new_primCmpInt(Pos(Succ(xwv4400)), Neg(xwv460)) → GT
new_esEs18(xwv400, xwv3000, app(app(ty_Either, de), df)) → new_esEs7(xwv400, xwv3000, de, df)
new_ltEs18(xwv441, xwv461, ty_Char) → new_ltEs7(xwv441, xwv461)
new_ltEs19(xwv4412, xwv4612, ty_Float) → new_ltEs13(xwv4412, xwv4612)
new_primMulInt(Pos(xwv4000), Pos(xwv30000)) → Pos(new_primMulNat0(xwv4000, xwv30000))
new_lt21(xwv4410, xwv4610, ty_Int) → new_lt12(xwv4410, xwv4610)
new_ltEs20(xwv4411, xwv4611, ty_Bool) → new_ltEs17(xwv4411, xwv4611)
new_esEs19(xwv440, xwv460, ty_Ordering) → new_esEs12(xwv440, xwv460)
new_primMulInt(Neg(xwv4000), Neg(xwv30000)) → Pos(new_primMulNat0(xwv4000, xwv30000))
new_esEs7(Right(xwv400), Right(xwv3000), bfh, app(app(ty_@2, bgh), bha)) → new_esEs4(xwv400, xwv3000, bgh, bha)
new_primEqNat0(Succ(xwv4000), Zero) → False
new_primEqNat0(Zero, Succ(xwv30000)) → False
new_ltEs19(xwv4412, xwv4612, app(app(app(ty_@3, cab), cac), cad)) → new_ltEs14(xwv4412, xwv4612, cab, cac, cad)
new_ltEs5(Nothing, Nothing, ef) → True
new_lt4(xwv440, xwv460, app(app(app(ty_@3, bbc), bbd), bbe)) → new_lt15(xwv440, xwv460, bbc, bbd, bbe)
new_ltEs4(xwv441, xwv461) → new_fsEs(new_compare7(xwv441, xwv461))
new_primPlusNat0(Zero, Zero) → Zero
new_esEs32(xwv32, xwv34, ty_Bool) → new_esEs8(xwv32, xwv34)
new_esEs22(xwv4411, xwv4611, ty_Double) → new_esEs14(xwv4411, xwv4611)
new_ltEs19(xwv4412, xwv4612, ty_Char) → new_ltEs7(xwv4412, xwv4612)
new_primEqInt(Pos(Zero), Pos(Zero)) → True
new_esEs28(xwv401, xwv3001, app(app(app(ty_@3, deb), dec), ded)) → new_esEs6(xwv401, xwv3001, deb, dec, ded)
new_esEs5(Just(xwv400), Just(xwv3000), app(ty_[], bg)) → new_esEs10(xwv400, xwv3000, bg)
new_lt19(xwv4411, xwv4611, ty_Double) → new_lt17(xwv4411, xwv4611)
new_ltEs18(xwv441, xwv461, ty_Bool) → new_ltEs17(xwv441, xwv461)
new_compare112(xwv104, xwv105, xwv106, xwv107, False, bhc, bhd) → GT
new_esEs27(xwv4410, xwv4610, app(app(app(ty_@3, dda), ddb), ddc)) → new_esEs6(xwv4410, xwv4610, dda, ddb, ddc)
new_compare210(xwv440, xwv460, True) → EQ
new_esEs19(xwv440, xwv460, app(ty_Maybe, ee)) → new_esEs5(xwv440, xwv460, ee)
new_ltEs14(@3(xwv4410, xwv4411, xwv4412), @3(xwv4610, xwv4611, xwv4612), bac, bad, bae) → new_pePe(new_lt20(xwv4410, xwv4610, bac), new_asAs(new_esEs23(xwv4410, xwv4610, bac), new_pePe(new_lt19(xwv4411, xwv4611, bad), new_asAs(new_esEs22(xwv4411, xwv4611, bad), new_ltEs19(xwv4412, xwv4612, bae)))))
new_lt21(xwv4410, xwv4610, ty_Ordering) → new_lt7(xwv4410, xwv4610)
new_lt20(xwv4410, xwv4610, ty_Bool) → new_lt18(xwv4410, xwv4610)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Char, bag) → new_ltEs7(xwv4410, xwv4610)
new_esEs26(xwv400, xwv3000, ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs31(xwv40, xwv300, ty_Char) → new_esEs9(xwv40, xwv300)
new_esEs8(True, True) → True
new_esEs26(xwv400, xwv3000, app(ty_Maybe, chc)) → new_esEs5(xwv400, xwv3000, chc)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, ty_Float) → new_ltEs13(xwv4410, xwv4610)
new_primPlusNat1(Succ(xwv950), xwv300000) → Succ(Succ(new_primPlusNat0(xwv950, xwv300000)))
new_lt20(xwv4410, xwv4610, ty_Int) → new_lt12(xwv4410, xwv4610)
new_ltEs19(xwv4412, xwv4612, app(ty_Maybe, caa)) → new_ltEs5(xwv4412, xwv4612, caa)
new_esEs19(xwv440, xwv460, ty_Char) → new_esEs9(xwv440, xwv460)
new_ltEs15(Left(xwv4410), Left(xwv4610), app(ty_Maybe, bce), bag) → new_ltEs5(xwv4410, xwv4610, bce)
new_lt19(xwv4411, xwv4611, ty_Bool) → new_lt18(xwv4411, xwv4611)
new_primCmpInt(Neg(Zero), Neg(Succ(xwv4600))) → new_primCmpNat0(Succ(xwv4600), Zero)
new_esEs25(xwv401, xwv3001, ty_Int) → new_esEs16(xwv401, xwv3001)
new_primCmpInt(Pos(Zero), Neg(Succ(xwv4600))) → GT
new_lt21(xwv4410, xwv4610, app(ty_Maybe, dch)) → new_lt13(xwv4410, xwv4610, dch)
new_esEs7(Left(xwv400), Left(xwv3000), app(app(ty_@2, bfe), bff), bee) → new_esEs4(xwv400, xwv3000, bfe, bff)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Float, bag) → new_ltEs13(xwv4410, xwv4610)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Char) → new_ltEs7(xwv4410, xwv4610)
new_esEs5(Just(xwv400), Just(xwv3000), app(app(app(ty_@3, cc), cd), ce)) → new_esEs6(xwv400, xwv3000, cc, cd, ce)
new_lt21(xwv4410, xwv4610, ty_Integer) → new_lt5(xwv4410, xwv4610)
new_ltEs19(xwv4412, xwv4612, ty_Bool) → new_ltEs17(xwv4412, xwv4612)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, ty_Ordering) → new_ltEs8(xwv4410, xwv4610)
new_ltEs20(xwv4411, xwv4611, ty_Float) → new_ltEs13(xwv4411, xwv4611)
new_sr0(xwv400, xwv3000) → new_primMulInt(xwv400, xwv3000)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Ordering) → new_ltEs8(xwv4410, xwv4610)
new_esEs19(xwv440, xwv460, ty_Double) → new_esEs14(xwv440, xwv460)
new_esEs32(xwv32, xwv34, ty_Int) → new_esEs16(xwv32, xwv34)
new_esEs5(Just(xwv400), Just(xwv3000), ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs24(xwv402, xwv3002, app(ty_[], cdf)) → new_esEs10(xwv402, xwv3002, cdf)
new_esEs7(Left(xwv400), Left(xwv3000), ty_Ordering, bee) → new_esEs12(xwv400, xwv3000)
new_esEs4(@2(xwv400, xwv401), @2(xwv3000, xwv3001), dah, dba) → new_asAs(new_esEs29(xwv400, xwv3000, dah), new_esEs28(xwv401, xwv3001, dba))
new_lt4(xwv440, xwv460, app(app(ty_@2, bba), bbb)) → new_lt11(xwv440, xwv460, bba, bbb)
new_esEs28(xwv401, xwv3001, ty_Bool) → new_esEs8(xwv401, xwv3001)
new_esEs21(xwv400, xwv3000, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_ltEs20(xwv4411, xwv4611, app(app(ty_Either, dcb), dcc)) → new_ltEs15(xwv4411, xwv4611, dcb, dcc)
new_lt19(xwv4411, xwv4611, ty_Ordering) → new_lt7(xwv4411, xwv4611)
new_primCmpInt(Neg(Zero), Neg(Zero)) → EQ
new_esEs5(Just(xwv400), Just(xwv3000), ty_Float) → new_esEs15(xwv400, xwv3000)
new_ltEs6(xwv441, xwv461) → new_fsEs(new_compare6(xwv441, xwv461))
new_esEs28(xwv401, xwv3001, app(app(ty_@2, dee), def)) → new_esEs4(xwv401, xwv3001, dee, def)
new_asAs(False, xwv55) → False
new_ltEs20(xwv4411, xwv4611, ty_Double) → new_ltEs16(xwv4411, xwv4611)
new_esEs5(Just(xwv400), Just(xwv3000), app(app(ty_Either, ca), cb)) → new_esEs7(xwv400, xwv3000, ca, cb)
new_primMulInt(Neg(xwv4000), Pos(xwv30000)) → Neg(new_primMulNat0(xwv4000, xwv30000))
new_primMulInt(Pos(xwv4000), Neg(xwv30000)) → Neg(new_primMulNat0(xwv4000, xwv30000))
new_lt4(xwv440, xwv460, ty_Int) → new_lt12(xwv440, xwv460)
new_lt4(xwv440, xwv460, ty_Ordering) → new_lt7(xwv440, xwv460)
new_primMulNat0(Zero, Succ(xwv300000)) → Zero
new_primMulNat0(Succ(xwv40000), Zero) → Zero
new_esEs23(xwv4410, xwv4610, app(app(app(ty_@3, ccf), ccg), cch)) → new_esEs6(xwv4410, xwv4610, ccf, ccg, cch)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, app(ty_Maybe, bdg)) → new_ltEs5(xwv4410, xwv4610, bdg)
new_esEs21(xwv400, xwv3000, ty_Int) → new_esEs16(xwv400, xwv3000)
new_esEs23(xwv4410, xwv4610, ty_Ordering) → new_esEs12(xwv4410, xwv4610)
new_esEs28(xwv401, xwv3001, app(ty_[], ddf)) → new_esEs10(xwv401, xwv3001, ddf)
new_esEs22(xwv4411, xwv4611, app(ty_[], cag)) → new_esEs10(xwv4411, xwv4611, cag)
new_esEs19(xwv440, xwv460, ty_Int) → new_esEs16(xwv440, xwv460)
new_esEs31(xwv40, xwv300, ty_@0) → new_esEs13(xwv40, xwv300)
new_ltEs5(Just(xwv4410), Just(xwv4610), app(ty_Maybe, fc)) → new_ltEs5(xwv4410, xwv4610, fc)
new_esEs14(Double(xwv400, xwv401), Double(xwv3000, xwv3001)) → new_esEs16(new_sr0(xwv400, xwv3000), new_sr0(xwv401, xwv3001))
new_esEs18(xwv400, xwv3000, app(ty_Maybe, ed)) → new_esEs5(xwv400, xwv3000, ed)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Int, bag) → new_ltEs4(xwv4410, xwv4610)
new_lt8(xwv440, xwv460, gb) → new_esEs12(new_compare0(xwv440, xwv460, gb), LT)
new_ltEs18(xwv441, xwv461, ty_Float) → new_ltEs13(xwv441, xwv461)
new_esEs27(xwv4410, xwv4610, ty_@0) → new_esEs13(xwv4410, xwv4610)
new_ltEs12(@2(xwv4410, xwv4411), @2(xwv4610, xwv4611), baa, bab) → new_pePe(new_lt21(xwv4410, xwv4610, baa), new_asAs(new_esEs27(xwv4410, xwv4610, baa), new_ltEs20(xwv4411, xwv4611, bab)))
new_esEs24(xwv402, xwv3002, ty_Integer) → new_esEs17(xwv402, xwv3002)
new_esEs23(xwv4410, xwv4610, ty_Float) → new_esEs15(xwv4410, xwv4610)
new_lt17(xwv440, xwv460) → new_esEs12(new_compare19(xwv440, xwv460), LT)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, ty_Int) → new_ltEs4(xwv4410, xwv4610)
new_esEs23(xwv4410, xwv4610, app(ty_Maybe, cce)) → new_esEs5(xwv4410, xwv4610, cce)
new_ltEs17(True, True) → True
new_esEs25(xwv401, xwv3001, app(app(app(ty_@3, cfd), cfe), cff)) → new_esEs6(xwv401, xwv3001, cfd, cfe, cff)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Integer, bag) → new_ltEs6(xwv4410, xwv4610)
new_esEs23(xwv4410, xwv4610, ty_Char) → new_esEs9(xwv4410, xwv4610)
new_lt4(xwv440, xwv460, ty_Bool) → new_lt18(xwv440, xwv460)
new_lt21(xwv4410, xwv4610, ty_Bool) → new_lt18(xwv4410, xwv4610)
new_esEs23(xwv4410, xwv4610, ty_Int) → new_esEs16(xwv4410, xwv4610)
new_compare27(xwv440, xwv460, True) → EQ
new_esEs27(xwv4410, xwv4610, app(ty_[], dcd)) → new_esEs10(xwv4410, xwv4610, dcd)
new_esEs7(Left(xwv400), Left(xwv3000), app(app(app(ty_@3, bfb), bfc), bfd), bee) → new_esEs6(xwv400, xwv3000, bfb, bfc, bfd)
new_compare17(xwv440, xwv460, bbc, bbd, bbe) → new_compare29(xwv440, xwv460, new_esEs6(xwv440, xwv460, bbc, bbd, bbe), bbc, bbd, bbe)
new_lt14(xwv440, xwv460) → new_esEs12(new_compare8(xwv440, xwv460), LT)
new_ltEs8(LT, GT) → True
new_esEs5(Nothing, Just(xwv3000), bf) → False
new_esEs5(Just(xwv400), Nothing, bf) → False
new_lt9(xwv440, xwv460, bah) → new_esEs12(new_compare5(xwv440, xwv460, bah), LT)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Bool, bag) → new_ltEs17(xwv4410, xwv4610)
new_esEs27(xwv4410, xwv4610, ty_Int) → new_esEs16(xwv4410, xwv4610)
new_ltEs9(xwv441, xwv461, hg) → new_fsEs(new_compare0(xwv441, xwv461, hg))
new_lt11(xwv440, xwv460, bba, bbb) → new_esEs12(new_compare15(xwv440, xwv460, bba, bbb), LT)
new_esEs32(xwv32, xwv34, app(app(app(ty_@3, dab), dac), dad)) → new_esEs6(xwv32, xwv34, dab, dac, dad)
new_esEs27(xwv4410, xwv4610, app(app(ty_@2, dcf), dcg)) → new_esEs4(xwv4410, xwv4610, dcf, dcg)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, ty_Int) → new_esEs16(xwv400, xwv3000)
new_ltEs10(xwv441, xwv461, hh) → new_fsEs(new_compare5(xwv441, xwv461, hh))
new_compare9(xwv4400, xwv4600, ty_@0) → new_compare14(xwv4400, xwv4600)
new_lt20(xwv4410, xwv4610, ty_Integer) → new_lt5(xwv4410, xwv4610)
new_esEs10(:(xwv400, xwv401), :(xwv3000, xwv3001), db) → new_asAs(new_esEs18(xwv400, xwv3000, db), new_esEs10(xwv401, xwv3001, db))
new_esEs5(Just(xwv400), Just(xwv3000), app(ty_Ratio, bh)) → new_esEs11(xwv400, xwv3000, bh)
new_primCmpInt(Pos(Succ(xwv4400)), Pos(Zero)) → GT
new_esEs32(xwv32, xwv34, ty_Ordering) → new_esEs12(xwv32, xwv34)
new_primCmpInt(Pos(Succ(xwv4400)), Pos(Succ(xwv4600))) → new_primCmpNat0(xwv4400, xwv4600)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Bool) → new_ltEs17(xwv4410, xwv4610)
new_esEs7(Right(xwv400), Right(xwv3000), bfh, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_esEs5(Just(xwv400), Just(xwv3000), ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_ltEs17(False, True) → True
new_compare26(@2(xwv440, xwv441), @2(xwv460, xwv461), False, he, hf) → new_compare110(xwv440, xwv441, xwv460, xwv461, new_lt4(xwv440, xwv460, he), new_asAs(new_esEs19(xwv440, xwv460, he), new_ltEs18(xwv441, xwv461, hf)), he, hf)
new_esEs27(xwv4410, xwv4610, ty_Ordering) → new_esEs12(xwv4410, xwv4610)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_Double, bag) → new_ltEs16(xwv4410, xwv4610)
new_esEs5(Nothing, Nothing, bf) → True
new_esEs28(xwv401, xwv3001, app(ty_Maybe, deg)) → new_esEs5(xwv401, xwv3001, deg)
new_lt21(xwv4410, xwv4610, ty_Double) → new_lt17(xwv4410, xwv4610)
new_esEs7(Left(xwv400), Left(xwv3000), app(ty_Maybe, bfg), bee) → new_esEs5(xwv400, xwv3000, bfg)
new_esEs29(xwv400, xwv3000, app(app(app(ty_@3, dfd), dfe), dff)) → new_esEs6(xwv400, xwv3000, dfd, dfe, dff)
new_esEs22(xwv4411, xwv4611, ty_Integer) → new_esEs17(xwv4411, xwv4611)
new_esEs29(xwv400, xwv3000, app(app(ty_Either, dfb), dfc)) → new_esEs7(xwv400, xwv3000, dfb, dfc)
new_ltEs15(Left(xwv4410), Left(xwv4610), ty_@0, bag) → new_ltEs11(xwv4410, xwv4610)
new_esEs31(xwv40, xwv300, ty_Ordering) → new_esEs12(xwv40, xwv300)
new_ltEs11(xwv441, xwv461) → new_fsEs(new_compare14(xwv441, xwv461))
new_esEs19(xwv440, xwv460, ty_Integer) → new_esEs17(xwv440, xwv460)
new_esEs12(GT, GT) → True
new_esEs31(xwv40, xwv300, app(ty_Ratio, bbh)) → new_esEs11(xwv40, xwv300, bbh)
new_esEs29(xwv400, xwv3000, app(ty_[], deh)) → new_esEs10(xwv400, xwv3000, deh)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, app(app(ty_Either, bec), bed)) → new_ltEs15(xwv4410, xwv4610, bec, bed)
new_lt21(xwv4410, xwv4610, app(app(app(ty_@3, dda), ddb), ddc)) → new_lt15(xwv4410, xwv4610, dda, ddb, ddc)
new_esEs26(xwv400, xwv3000, ty_Char) → new_esEs9(xwv400, xwv3000)
new_esEs28(xwv401, xwv3001, app(ty_Ratio, ddg)) → new_esEs11(xwv401, xwv3001, ddg)
new_esEs26(xwv400, xwv3000, app(ty_Ratio, cgc)) → new_esEs11(xwv400, xwv3000, cgc)
new_lt19(xwv4411, xwv4611, ty_@0) → new_lt10(xwv4411, xwv4611)
new_esEs9(Char(xwv400), Char(xwv3000)) → new_primEqNat0(xwv400, xwv3000)
new_esEs22(xwv4411, xwv4611, app(ty_Maybe, cbc)) → new_esEs5(xwv4411, xwv4611, cbc)
new_ltEs8(LT, LT) → True
new_primPlusNat0(Succ(xwv19200), Succ(xwv9100)) → Succ(Succ(new_primPlusNat0(xwv19200, xwv9100)))
new_esEs22(xwv4411, xwv4611, ty_@0) → new_esEs13(xwv4411, xwv4611)
new_esEs28(xwv401, xwv3001, ty_Float) → new_esEs15(xwv401, xwv3001)
new_esEs29(xwv400, xwv3000, ty_Ordering) → new_esEs12(xwv400, xwv3000)
new_compare0([], :(xwv4600, xwv4601), gb) → LT
new_esEs31(xwv40, xwv300, ty_Double) → new_esEs14(xwv40, xwv300)
new_compare9(xwv4400, xwv4600, ty_Int) → new_compare7(xwv4400, xwv4600)
new_asAs(True, xwv55) → xwv55
new_lt19(xwv4411, xwv4611, app(ty_Maybe, cbc)) → new_lt13(xwv4411, xwv4611, cbc)
new_esEs30(xwv31, xwv32, xwv33, xwv34, False, chd, che) → new_esEs12(new_compare26(@2(xwv31, xwv32), @2(xwv33, xwv34), False, chd, che), GT)
new_ltEs15(Left(xwv4410), Left(xwv4610), app(ty_Ratio, bcb), bag) → new_ltEs10(xwv4410, xwv4610, bcb)
new_esEs29(xwv400, xwv3000, app(ty_Ratio, dfa)) → new_esEs11(xwv400, xwv3000, dfa)
new_esEs7(Left(xwv400), Left(xwv3000), ty_@0, bee) → new_esEs13(xwv400, xwv3000)
new_ltEs15(Left(xwv4410), Left(xwv4610), app(ty_[], bca), bag) → new_ltEs9(xwv4410, xwv4610, bca)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, app(ty_[], bdc)) → new_ltEs9(xwv4410, xwv4610, bdc)
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Int) → new_ltEs4(xwv4410, xwv4610)
new_esEs31(xwv40, xwv300, ty_Int) → new_esEs16(xwv40, xwv300)
new_esEs19(xwv440, xwv460, ty_Bool) → new_esEs8(xwv440, xwv460)
new_ltEs15(Left(xwv4410), Left(xwv4610), app(app(ty_Either, bda), bdb), bag) → new_ltEs15(xwv4410, xwv4610, bda, bdb)
new_esEs31(xwv40, xwv300, ty_Float) → new_esEs15(xwv40, xwv300)
new_ltEs15(Left(xwv4410), Right(xwv4610), baf, bag) → True
new_ltEs5(Just(xwv4410), Just(xwv4610), ty_Float) → new_ltEs13(xwv4410, xwv4610)
new_compare9(xwv4400, xwv4600, ty_Float) → new_compare8(xwv4400, xwv4600)
new_compare10(xwv440, xwv460, True) → LT
new_ltEs18(xwv441, xwv461, ty_Ordering) → new_ltEs8(xwv441, xwv461)
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, ty_Double) → new_ltEs16(xwv4410, xwv4610)
new_esEs18(xwv400, xwv3000, ty_Integer) → new_esEs17(xwv400, xwv3000)
new_lt4(xwv440, xwv460, ty_Integer) → new_lt5(xwv440, xwv460)
new_compare10(xwv440, xwv460, False) → GT
new_ltEs15(Right(xwv4410), Right(xwv4610), baf, app(app(ty_@2, bde), bdf)) → new_ltEs12(xwv4410, xwv4610, bde, bdf)
new_esEs18(xwv400, xwv3000, ty_Bool) → new_esEs8(xwv400, xwv3000)
new_primCompAux00(xwv136, GT) → GT
new_esEs25(xwv401, xwv3001, app(app(ty_Either, cfb), cfc)) → new_esEs7(xwv401, xwv3001, cfb, cfc)
new_ltEs19(xwv4412, xwv4612, ty_Int) → new_ltEs4(xwv4412, xwv4612)
new_esEs25(xwv401, xwv3001, ty_Bool) → new_esEs8(xwv401, xwv3001)
new_primCmpInt(Pos(Zero), Pos(Zero)) → EQ
new_ltEs20(xwv4411, xwv4611, ty_Char) → new_ltEs7(xwv4411, xwv4611)
new_ltEs15(Right(xwv4410), Left(xwv4610), baf, bag) → False
new_esEs19(xwv440, xwv460, app(app(ty_@2, bba), bbb)) → new_esEs4(xwv440, xwv460, bba, bbb)
new_esEs22(xwv4411, xwv4611, app(ty_Ratio, cah)) → new_esEs11(xwv4411, xwv4611, cah)
new_primEqInt(Pos(Zero), Neg(Zero)) → True
new_primEqInt(Neg(Zero), Pos(Zero)) → True
new_esEs27(xwv4410, xwv4610, ty_Char) → new_esEs9(xwv4410, xwv4610)
new_primCmpInt(Neg(Succ(xwv4400)), Pos(xwv460)) → LT
new_esEs22(xwv4411, xwv4611, ty_Int) → new_esEs16(xwv4411, xwv4611)
new_ltEs18(xwv441, xwv461, app(app(app(ty_@3, bac), bad), bae)) → new_ltEs14(xwv441, xwv461, bac, bad, bae)
new_esEs24(xwv402, xwv3002, ty_Double) → new_esEs14(xwv402, xwv3002)
new_not(True) → False
new_compare27(xwv440, xwv460, False) → new_compare111(xwv440, xwv460, new_ltEs17(xwv440, xwv460))

The set Q consists of the following terms:

new_lt5(x0, x1)
new_esEs28(x0, x1, ty_Int)
new_compare5(:%(x0, x1), :%(x2, x3), ty_Integer)
new_esEs13(@0, @0)
new_compare17(x0, x1, x2, x3, x4)
new_esEs32(x0, x1, ty_Float)
new_esEs26(x0, x1, ty_@0)
new_ltEs19(x0, x1, ty_Integer)
new_esEs5(Just(x0), Just(x1), ty_Char)
new_lt9(x0, x1, x2)
new_primCompAux00(x0, LT)
new_lt21(x0, x1, ty_Char)
new_esEs20(x0, x1, ty_Int)
new_esEs9(Char(x0), Char(x1))
new_lt20(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs20(x0, x1, ty_Bool)
new_ltEs8(EQ, EQ)
new_lt19(x0, x1, app(ty_[], x2))
new_esEs7(Right(x0), Right(x1), x2, ty_Ordering)
new_esEs29(x0, x1, ty_Float)
new_ltEs5(Just(x0), Just(x1), app(ty_Ratio, x2))
new_esEs21(x0, x1, ty_Integer)
new_lt19(x0, x1, ty_Double)
new_esEs18(x0, x1, ty_Bool)
new_esEs25(x0, x1, app(ty_[], x2))
new_lt19(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs5(Just(x0), Just(x1), ty_Integer)
new_ltEs19(x0, x1, ty_Char)
new_primCmpInt(Neg(Succ(x0)), Neg(Succ(x1)))
new_esEs26(x0, x1, ty_Float)
new_esEs27(x0, x1, ty_Double)
new_lt20(x0, x1, ty_Ordering)
new_compare9(x0, x1, ty_Bool)
new_esEs19(x0, x1, ty_Char)
new_compare9(x0, x1, ty_Float)
new_esEs27(x0, x1, app(ty_[], x2))
new_ltEs19(x0, x1, ty_@0)
new_ltEs5(Nothing, Nothing, x0)
new_esEs5(Just(x0), Just(x1), app(app(ty_Either, x2), x3))
new_esEs29(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs26(x0, x1, ty_Char)
new_ltEs15(Right(x0), Right(x1), x2, ty_@0)
new_ltEs20(x0, x1, app(ty_Ratio, x2))
new_esEs25(x0, x1, ty_Float)
new_ltEs19(x0, x1, app(ty_Maybe, x2))
new_ltEs18(x0, x1, ty_Bool)
new_ltEs15(Left(x0), Left(x1), app(ty_Maybe, x2), x3)
new_ltEs20(x0, x1, ty_Float)
new_esEs31(x0, x1, ty_Double)
new_compare29(x0, x1, True, x2, x3, x4)
new_ltEs18(x0, x1, ty_Integer)
new_esEs24(x0, x1, app(app(ty_Either, x2), x3))
new_primEqInt(Pos(Zero), Pos(Succ(x0)))
new_esEs19(x0, x1, ty_Ordering)
new_esEs5(Just(x0), Just(x1), app(ty_[], x2))
new_primCmpNat0(Zero, Succ(x0))
new_ltEs20(x0, x1, app(app(ty_Either, x2), x3))
new_compare10(x0, x1, False)
new_esEs7(Left(x0), Left(x1), ty_Char, x2)
new_esEs32(x0, x1, app(ty_[], x2))
new_pePe(False, x0)
new_compare29(x0, x1, False, x2, x3, x4)
new_esEs28(x0, x1, ty_Float)
new_esEs12(EQ, GT)
new_esEs12(GT, EQ)
new_ltEs20(x0, x1, ty_@0)
new_ltEs15(Right(x0), Right(x1), x2, app(ty_Maybe, x3))
new_ltEs18(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs15(Right(x0), Right(x1), x2, ty_Double)
new_esEs32(x0, x1, ty_Integer)
new_ltEs15(Left(x0), Left(x1), app(app(app(ty_@3, x2), x3), x4), x5)
new_esEs7(Right(x0), Right(x1), x2, ty_@0)
new_compare28(x0, x1, False, x2, x3)
new_compare0(:(x0, x1), [], x2)
new_esEs22(x0, x1, ty_Char)
new_esEs29(x0, x1, app(app(ty_@2, x2), x3))
new_lt19(x0, x1, app(ty_Ratio, x2))
new_primEqInt(Neg(Succ(x0)), Neg(Zero))
new_esEs12(GT, GT)
new_esEs5(Just(x0), Nothing, x1)
new_esEs19(x0, x1, ty_Int)
new_lt21(x0, x1, ty_Float)
new_compare28(x0, x1, True, x2, x3)
new_lt21(x0, x1, ty_Int)
new_esEs7(Left(x0), Left(x1), app(ty_Ratio, x2), x3)
new_compare11(x0, x1, False, x2)
new_lt6(x0, x1)
new_esEs19(x0, x1, app(ty_Ratio, x2))
new_ltEs15(Right(x0), Right(x1), x2, ty_Integer)
new_esEs8(True, True)
new_ltEs15(Right(x0), Right(x1), x2, ty_Int)
new_esEs22(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs15(Left(x0), Left(x1), ty_Double, x2)
new_primEqInt(Pos(Succ(x0)), Pos(Zero))
new_primEqInt(Neg(Zero), Pos(Succ(x0)))
new_primEqInt(Pos(Zero), Neg(Succ(x0)))
new_esEs27(x0, x1, ty_Float)
new_lt21(x0, x1, app(app(ty_@2, x2), x3))
new_esEs22(x0, x1, ty_Bool)
new_ltEs11(x0, x1)
new_ltEs5(Just(x0), Just(x1), ty_@0)
new_compare5(:%(x0, x1), :%(x2, x3), ty_Int)
new_esEs22(x0, x1, ty_Ordering)
new_esEs29(x0, x1, ty_Int)
new_ltEs17(False, False)
new_primPlusNat1(Zero, x0)
new_esEs28(x0, x1, ty_Bool)
new_esEs23(x0, x1, ty_Char)
new_esEs10([], :(x0, x1), x2)
new_lt11(x0, x1, x2, x3)
new_ltEs19(x0, x1, app(ty_[], x2))
new_primEqNat0(Zero, Zero)
new_esEs23(x0, x1, ty_Integer)
new_lt19(x0, x1, app(ty_Maybe, x2))
new_esEs25(x0, x1, app(app(ty_Either, x2), x3))
new_esEs7(Left(x0), Left(x1), app(app(app(ty_@3, x2), x3), x4), x5)
new_esEs5(Just(x0), Just(x1), ty_Integer)
new_lt16(x0, x1, x2, x3)
new_esEs19(x0, x1, app(ty_Maybe, x2))
new_esEs29(x0, x1, ty_@0)
new_esEs7(Right(x0), Right(x1), x2, app(ty_[], x3))
new_lt12(x0, x1)
new_lt19(x0, x1, ty_Ordering)
new_esEs26(x0, x1, ty_Double)
new_esEs7(Left(x0), Left(x1), ty_@0, x2)
new_esEs21(x0, x1, ty_Int)
new_primPlusNat0(Succ(x0), Succ(x1))
new_esEs14(Double(x0, x1), Double(x2, x3))
new_esEs24(x0, x1, ty_Ordering)
new_compare24(x0, x1, True, x2)
new_lt4(x0, x1, ty_Char)
new_esEs23(x0, x1, app(ty_Maybe, x2))
new_primMulNat0(Zero, Zero)
new_compare8(Float(x0, x1), Float(x2, x3))
new_esEs32(x0, x1, ty_Char)
new_esEs27(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs15(Left(x0), Left(x1), app(ty_Ratio, x2), x3)
new_esEs28(x0, x1, ty_@0)
new_lt20(x0, x1, app(ty_[], x2))
new_primCmpInt(Neg(Zero), Pos(Succ(x0)))
new_primCmpInt(Pos(Zero), Neg(Succ(x0)))
new_ltEs5(Just(x0), Just(x1), ty_Float)
new_esEs18(x0, x1, app(ty_Ratio, x2))
new_esEs26(x0, x1, ty_Int)
new_asAs(False, x0)
new_esEs25(x0, x1, app(ty_Maybe, x2))
new_esEs25(x0, x1, ty_Ordering)
new_primCmpInt(Neg(Succ(x0)), Pos(x1))
new_primCmpInt(Pos(Succ(x0)), Neg(x1))
new_esEs5(Just(x0), Just(x1), ty_Ordering)
new_esEs24(x0, x1, ty_Int)
new_compare9(x0, x1, ty_Double)
new_esEs28(x0, x1, app(ty_Ratio, x2))
new_primEqInt(Neg(Zero), Neg(Succ(x0)))
new_primMulInt(Pos(x0), Pos(x1))
new_esEs19(x0, x1, ty_Integer)
new_esEs7(Right(x0), Right(x1), x2, ty_Int)
new_esEs31(x0, x1, app(app(ty_@2, x2), x3))
new_compare210(x0, x1, False)
new_ltEs17(True, True)
new_compare15(x0, x1, x2, x3)
new_esEs29(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs18(x0, x1, ty_Double)
new_primCompAux0(x0, x1, x2, x3)
new_esEs7(Right(x0), Right(x1), x2, ty_Char)
new_lt4(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs31(x0, x1, app(app(ty_Either, x2), x3))
new_esEs27(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs31(x0, x1, app(ty_[], x2))
new_esEs11(:%(x0, x1), :%(x2, x3), x4)
new_compare11(x0, x1, True, x2)
new_esEs26(x0, x1, ty_Ordering)
new_compare27(x0, x1, True)
new_esEs31(x0, x1, ty_Integer)
new_esEs10(:(x0, x1), [], x2)
new_ltEs15(Right(x0), Right(x1), x2, ty_Float)
new_compare9(x0, x1, ty_Integer)
new_esEs23(x0, x1, app(app(ty_@2, x2), x3))
new_esEs27(x0, x1, ty_Bool)
new_esEs18(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs15(Left(x0), Left(x1), ty_Bool, x2)
new_lt19(x0, x1, ty_Int)
new_lt17(x0, x1)
new_esEs23(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare26(x0, x1, True, x2, x3)
new_ltEs19(x0, x1, ty_Float)
new_esEs23(x0, x1, ty_Ordering)
new_ltEs10(x0, x1, x2)
new_esEs26(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs18(x0, x1, ty_Char)
new_ltEs19(x0, x1, app(ty_Ratio, x2))
new_esEs8(False, True)
new_esEs8(True, False)
new_esEs5(Just(x0), Just(x1), app(ty_Maybe, x2))
new_compare110(x0, x1, x2, x3, False, x4, x5, x6)
new_esEs10([], [], x0)
new_esEs16(x0, x1)
new_lt20(x0, x1, ty_@0)
new_esEs26(x0, x1, ty_Bool)
new_esEs32(x0, x1, app(ty_Maybe, x2))
new_primMulNat0(Zero, Succ(x0))
new_esEs5(Just(x0), Just(x1), ty_Int)
new_esEs8(False, False)
new_ltEs18(x0, x1, ty_Ordering)
new_esEs4(@2(x0, x1), @2(x2, x3), x4, x5)
new_ltEs5(Just(x0), Just(x1), app(ty_[], x2))
new_compare9(x0, x1, app(app(ty_Either, x2), x3))
new_primPlusNat0(Succ(x0), Zero)
new_compare0([], :(x0, x1), x2)
new_lt21(x0, x1, app(ty_Ratio, x2))
new_esEs23(x0, x1, app(app(ty_Either, x2), x3))
new_esEs19(x0, x1, ty_Double)
new_compare0([], [], x0)
new_lt19(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs18(x0, x1, ty_@0)
new_esEs29(x0, x1, app(ty_[], x2))
new_ltEs15(Right(x0), Right(x1), x2, ty_Bool)
new_esEs7(Right(x0), Right(x1), x2, app(ty_Ratio, x3))
new_esEs24(x0, x1, ty_Bool)
new_ltEs15(Right(x0), Left(x1), x2, x3)
new_ltEs15(Left(x0), Right(x1), x2, x3)
new_esEs18(x0, x1, app(ty_[], x2))
new_compare19(Double(x0, x1), Double(x2, x3))
new_esEs12(LT, EQ)
new_esEs12(EQ, LT)
new_ltEs15(Left(x0), Left(x1), app(ty_[], x2), x3)
new_ltEs12(@2(x0, x1), @2(x2, x3), x4, x5)
new_compare10(x0, x1, True)
new_ltEs15(Right(x0), Right(x1), x2, ty_Char)
new_compare9(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_lt4(x0, x1, app(ty_[], x2))
new_ltEs20(x0, x1, app(ty_[], x2))
new_esEs12(EQ, EQ)
new_primPlusNat0(Zero, Zero)
new_ltEs5(Just(x0), Just(x1), app(ty_Maybe, x2))
new_esEs26(x0, x1, app(ty_Ratio, x2))
new_lt20(x0, x1, ty_Float)
new_esEs25(x0, x1, ty_Double)
new_lt21(x0, x1, app(ty_[], x2))
new_esEs22(x0, x1, ty_Double)
new_esEs7(Right(x0), Right(x1), x2, app(app(app(ty_@3, x3), x4), x5))
new_esEs32(x0, x1, ty_@0)
new_esEs18(x0, x1, ty_Integer)
new_ltEs5(Just(x0), Just(x1), ty_Bool)
new_esEs7(Right(x0), Right(x1), x2, app(app(ty_Either, x3), x4))
new_esEs23(x0, x1, ty_@0)
new_esEs7(Right(x0), Right(x1), x2, ty_Bool)
new_compare112(x0, x1, x2, x3, False, x4, x5)
new_esEs23(x0, x1, app(ty_Ratio, x2))
new_esEs31(x0, x1, ty_Char)
new_lt20(x0, x1, ty_Int)
new_esEs18(x0, x1, app(app(ty_Either, x2), x3))
new_esEs25(x0, x1, ty_Integer)
new_esEs24(x0, x1, ty_Double)
new_esEs31(x0, x1, ty_Bool)
new_primCmpInt(Neg(Zero), Neg(Zero))
new_lt21(x0, x1, ty_Double)
new_lt4(x0, x1, ty_Ordering)
new_ltEs15(Left(x0), Left(x1), app(app(ty_Either, x2), x3), x4)
new_esEs27(x0, x1, ty_Integer)
new_esEs24(x0, x1, app(app(ty_@2, x2), x3))
new_esEs25(x0, x1, ty_Bool)
new_lt4(x0, x1, app(ty_Maybe, x2))
new_compare25(x0, x1)
new_esEs27(x0, x1, ty_@0)
new_primEqNat0(Succ(x0), Succ(x1))
new_esEs24(x0, x1, ty_@0)
new_esEs7(Left(x0), Left(x1), app(ty_Maybe, x2), x3)
new_esEs29(x0, x1, app(ty_Maybe, x2))
new_ltEs18(x0, x1, app(ty_Ratio, x2))
new_esEs12(LT, GT)
new_esEs12(GT, LT)
new_esEs23(x0, x1, app(ty_[], x2))
new_ltEs18(x0, x1, app(ty_Maybe, x2))
new_primCmpInt(Neg(Succ(x0)), Neg(Zero))
new_lt18(x0, x1)
new_esEs31(x0, x1, ty_Int)
new_lt8(x0, x1, x2)
new_esEs27(x0, x1, ty_Char)
new_esEs23(x0, x1, ty_Double)
new_compare9(x0, x1, ty_Char)
new_ltEs18(x0, x1, ty_Float)
new_esEs32(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs19(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs18(x0, x1, ty_@0)
new_ltEs15(Right(x0), Right(x1), x2, app(ty_[], x3))
new_compare113(x0, x1, False, x2, x3)
new_lt4(x0, x1, app(ty_Ratio, x2))
new_lt4(x0, x1, app(app(ty_Either, x2), x3))
new_compare6(Integer(x0), Integer(x1))
new_esEs19(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs29(x0, x1, ty_Char)
new_ltEs20(x0, x1, ty_Int)
new_primEqInt(Pos(Zero), Neg(Zero))
new_primEqInt(Neg(Zero), Pos(Zero))
new_compare111(x0, x1, True)
new_esEs30(x0, x1, x2, x3, False, x4, x5)
new_ltEs19(x0, x1, ty_Ordering)
new_esEs25(x0, x1, ty_Char)
new_lt21(x0, x1, ty_Bool)
new_ltEs15(Left(x0), Left(x1), ty_Int, x2)
new_esEs29(x0, x1, ty_Bool)
new_compare112(x0, x1, x2, x3, True, x4, x5)
new_esEs18(x0, x1, ty_Int)
new_primMulInt(Neg(x0), Pos(x1))
new_primMulInt(Pos(x0), Neg(x1))
new_esEs18(x0, x1, ty_Char)
new_esEs24(x0, x1, ty_Float)
new_fsEs(x0)
new_lt19(x0, x1, ty_Bool)
new_esEs7(Left(x0), Left(x1), ty_Double, x2)
new_ltEs8(EQ, LT)
new_ltEs8(LT, EQ)
new_esEs19(x0, x1, app(ty_[], x2))
new_lt20(x0, x1, ty_Integer)
new_esEs7(Left(x0), Left(x1), app(ty_[], x2), x3)
new_compare24(x0, x1, False, x2)
new_lt21(x0, x1, ty_@0)
new_esEs7(Left(x0), Left(x1), app(app(ty_@2, x2), x3), x4)
new_lt19(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_primCmpInt(Pos(Zero), Pos(Zero))
new_ltEs20(x0, x1, app(app(ty_@2, x2), x3))
new_esEs28(x0, x1, app(ty_Maybe, x2))
new_compare0(:(x0, x1), :(x2, x3), x4)
new_ltEs18(x0, x1, app(ty_[], x2))
new_primEqInt(Neg(Zero), Neg(Zero))
new_ltEs15(Left(x0), Left(x1), ty_@0, x2)
new_compare14(@0, @0)
new_esEs22(x0, x1, app(ty_[], x2))
new_ltEs20(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs27(x0, x1, ty_Int)
new_ltEs5(Just(x0), Nothing, x1)
new_ltEs15(Left(x0), Left(x1), ty_Float, x2)
new_lt21(x0, x1, ty_Ordering)
new_esEs22(x0, x1, ty_Float)
new_esEs7(Left(x0), Left(x1), ty_Int, x2)
new_compare9(x0, x1, app(ty_[], x2))
new_compare18(x0, x1, x2, x3)
new_esEs7(Left(x0), Left(x1), ty_Ordering, x2)
new_esEs7(Right(x0), Right(x1), x2, app(ty_Maybe, x3))
new_lt4(x0, x1, ty_Int)
new_esEs24(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs19(x0, x1, app(app(ty_Either, x2), x3))
new_lt4(x0, x1, ty_Integer)
new_ltEs5(Just(x0), Just(x1), ty_Double)
new_compare114(x0, x1, False, x2, x3, x4)
new_lt4(x0, x1, ty_Double)
new_compare210(x0, x1, True)
new_primCmpInt(Pos(Succ(x0)), Pos(Zero))
new_lt20(x0, x1, ty_Bool)
new_ltEs19(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs5(Just(x0), Just(x1), ty_Ordering)
new_esEs19(x0, x1, ty_Float)
new_esEs28(x0, x1, ty_Char)
new_lt21(x0, x1, app(ty_Maybe, x2))
new_ltEs19(x0, x1, app(app(ty_@2, x2), x3))
new_esEs22(x0, x1, app(app(ty_@2, x2), x3))
new_esEs18(x0, x1, ty_Float)
new_esEs25(x0, x1, app(ty_Ratio, x2))
new_primCmpNat0(Succ(x0), Succ(x1))
new_esEs7(Left(x0), Left(x1), ty_Integer, x2)
new_compare9(x0, x1, ty_@0)
new_lt4(x0, x1, app(app(ty_@2, x2), x3))
new_pePe(True, x0)
new_lt14(x0, x1)
new_esEs32(x0, x1, ty_Bool)
new_esEs28(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_primMulNat0(Succ(x0), Succ(x1))
new_lt4(x0, x1, ty_@0)
new_lt10(x0, x1)
new_primCmpNat0(Succ(x0), Zero)
new_esEs23(x0, x1, ty_Float)
new_ltEs15(Right(x0), Right(x1), x2, app(app(app(ty_@3, x3), x4), x5))
new_compare9(x0, x1, app(ty_Maybe, x2))
new_esEs22(x0, x1, ty_Integer)
new_esEs7(Right(x0), Right(x1), x2, ty_Integer)
new_lt4(x0, x1, ty_Bool)
new_compare114(x0, x1, True, x2, x3, x4)
new_ltEs8(LT, LT)
new_lt19(x0, x1, ty_Float)
new_lt20(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs20(x0, x1, ty_Char)
new_primCompAux00(x0, GT)
new_sr(Integer(x0), Integer(x1))
new_primCmpNat0(Zero, Zero)
new_esEs25(x0, x1, app(app(ty_@2, x2), x3))
new_esEs26(x0, x1, app(ty_Maybe, x2))
new_esEs18(x0, x1, ty_Double)
new_ltEs4(x0, x1)
new_esEs31(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs5(Nothing, Nothing, x0)
new_esEs31(x0, x1, app(ty_Maybe, x2))
new_esEs29(x0, x1, ty_Double)
new_ltEs8(GT, GT)
new_esEs7(Left(x0), Right(x1), x2, x3)
new_esEs7(Right(x0), Left(x1), x2, x3)
new_esEs17(Integer(x0), Integer(x1))
new_esEs28(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs5(Just(x0), Just(x1), app(app(app(ty_@3, x2), x3), x4))
new_esEs6(@3(x0, x1, x2), @3(x3, x4, x5), x6, x7, x8)
new_compare27(x0, x1, False)
new_compare7(x0, x1)
new_compare111(x0, x1, False)
new_esEs7(Right(x0), Right(x1), x2, ty_Double)
new_esEs7(Right(x0), Right(x1), x2, app(app(ty_@2, x3), x4))
new_esEs18(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs27(x0, x1, ty_Ordering)
new_primEqNat0(Zero, Succ(x0))
new_esEs29(x0, x1, ty_Ordering)
new_ltEs16(x0, x1)
new_ltEs15(Left(x0), Left(x1), ty_Char, x2)
new_esEs22(x0, x1, ty_Int)
new_esEs15(Float(x0, x1), Float(x2, x3))
new_compare9(x0, x1, app(ty_Ratio, x2))
new_lt20(x0, x1, app(app(ty_@2, x2), x3))
new_esEs5(Just(x0), Just(x1), ty_Bool)
new_ltEs20(x0, x1, ty_Ordering)
new_esEs5(Nothing, Just(x0), x1)
new_ltEs18(x0, x1, ty_Int)
new_lt20(x0, x1, app(ty_Maybe, x2))
new_esEs31(x0, x1, ty_Ordering)
new_esEs24(x0, x1, app(ty_[], x2))
new_esEs5(Just(x0), Just(x1), app(app(ty_@2, x2), x3))
new_primMulNat0(Succ(x0), Zero)
new_esEs32(x0, x1, ty_Ordering)
new_esEs26(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs8(LT, GT)
new_ltEs8(GT, LT)
new_lt13(x0, x1, x2)
new_lt20(x0, x1, app(ty_Ratio, x2))
new_compare26(@2(x0, x1), @2(x2, x3), False, x4, x5)
new_lt20(x0, x1, ty_Char)
new_ltEs5(Just(x0), Just(x1), app(app(ty_@2, x2), x3))
new_esEs25(x0, x1, ty_@0)
new_esEs5(Just(x0), Just(x1), ty_Float)
new_lt15(x0, x1, x2, x3, x4)
new_esEs29(x0, x1, app(ty_Ratio, x2))
new_ltEs5(Nothing, Just(x0), x1)
new_ltEs18(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs20(x0, x1, ty_Double)
new_ltEs7(x0, x1)
new_compare13(x0, x1)
new_primMulInt(Neg(x0), Neg(x1))
new_esEs7(Left(x0), Left(x1), ty_Bool, x2)
new_esEs26(x0, x1, ty_Integer)
new_not(True)
new_primCmpInt(Pos(Zero), Pos(Succ(x0)))
new_esEs27(x0, x1, app(ty_Maybe, x2))
new_lt21(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_primCmpInt(Pos(Succ(x0)), Pos(Succ(x1)))
new_lt4(x0, x1, ty_Float)
new_lt19(x0, x1, ty_Char)
new_ltEs15(Right(x0), Right(x1), x2, ty_Ordering)
new_esEs32(x0, x1, ty_Double)
new_esEs24(x0, x1, ty_Char)
new_primCmpInt(Neg(Zero), Pos(Zero))
new_primCmpInt(Pos(Zero), Neg(Zero))
new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1)))
new_not(False)
new_esEs29(x0, x1, ty_Integer)
new_esEs28(x0, x1, app(app(ty_@2, x2), x3))
new_lt19(x0, x1, ty_@0)
new_sr0(x0, x1)
new_primCmpInt(Neg(Zero), Neg(Succ(x0)))
new_ltEs17(False, True)
new_ltEs17(True, False)
new_ltEs5(Just(x0), Just(x1), app(app(ty_Either, x2), x3))
new_esEs19(x0, x1, ty_@0)
new_asAs(True, x0)
new_compare12(Char(x0), Char(x1))
new_compare9(x0, x1, ty_Ordering)
new_compare9(x0, x1, app(app(ty_@2, x2), x3))
new_esEs5(Just(x0), Just(x1), app(app(app(ty_@3, x2), x3), x4))
new_lt21(x0, x1, ty_Integer)
new_esEs5(Just(x0), Just(x1), ty_@0)
new_ltEs19(x0, x1, ty_Bool)
new_lt19(x0, x1, ty_Integer)
new_compare16(x0, x1, x2)
new_ltEs9(x0, x1, x2)
new_esEs5(Just(x0), Just(x1), ty_Double)
new_esEs22(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs19(x0, x1, ty_Int)
new_esEs22(x0, x1, app(ty_Maybe, x2))
new_esEs20(x0, x1, ty_Integer)
new_esEs25(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs6(x0, x1)
new_primPlusNat1(Succ(x0), x1)
new_esEs5(Just(x0), Just(x1), app(ty_Ratio, x2))
new_esEs7(Right(x0), Right(x1), x2, ty_Float)
new_ltEs8(GT, EQ)
new_ltEs8(EQ, GT)
new_esEs23(x0, x1, ty_Int)
new_ltEs15(Left(x0), Left(x1), ty_Ordering, x2)
new_esEs32(x0, x1, ty_Int)
new_esEs18(x0, x1, ty_Ordering)
new_esEs32(x0, x1, app(ty_Ratio, x2))
new_esEs22(x0, x1, app(ty_Ratio, x2))
new_esEs31(x0, x1, ty_@0)
new_compare113(x0, x1, True, x2, x3)
new_esEs25(x0, x1, ty_Int)
new_esEs31(x0, x1, ty_Float)
new_esEs19(x0, x1, app(app(ty_@2, x2), x3))
new_lt20(x0, x1, ty_Double)
new_ltEs15(Right(x0), Right(x1), x2, app(app(ty_@2, x3), x4))
new_primEqNat0(Succ(x0), Zero)
new_esEs28(x0, x1, ty_Double)
new_esEs26(x0, x1, app(ty_[], x2))
new_compare110(x0, x1, x2, x3, True, x4, x5, x6)
new_esEs31(x0, x1, app(ty_Ratio, x2))
new_esEs24(x0, x1, app(ty_Maybe, x2))
new_ltEs14(@3(x0, x1, x2), @3(x3, x4, x5), x6, x7, x8)
new_esEs28(x0, x1, app(ty_[], x2))
new_lt21(x0, x1, app(app(ty_Either, x2), x3))
new_primEqInt(Pos(Zero), Pos(Zero))
new_esEs32(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs27(x0, x1, app(ty_Ratio, x2))
new_primPlusNat0(Zero, Succ(x0))
new_esEs27(x0, x1, app(app(ty_@2, x2), x3))
new_primCompAux00(x0, EQ)
new_primEqInt(Neg(Succ(x0)), Pos(x1))
new_primEqInt(Pos(Succ(x0)), Neg(x1))
new_ltEs15(Right(x0), Right(x1), x2, app(app(ty_Either, x3), x4))
new_esEs7(Left(x0), Left(x1), ty_Float, x2)
new_ltEs19(x0, x1, ty_Double)
new_esEs28(x0, x1, ty_Integer)
new_esEs19(x0, x1, ty_Bool)
new_ltEs13(x0, x1)
new_ltEs15(Right(x0), Right(x1), x2, app(ty_Ratio, x3))
new_esEs23(x0, x1, ty_Bool)
new_esEs30(x0, x1, x2, x3, True, x4, x5)
new_ltEs15(Left(x0), Left(x1), app(app(ty_@2, x2), x3), x4)
new_ltEs5(Just(x0), Just(x1), ty_Int)
new_esEs24(x0, x1, ty_Integer)
new_esEs18(x0, x1, app(ty_Maybe, x2))
new_ltEs20(x0, x1, ty_Integer)
new_esEs22(x0, x1, ty_@0)
new_esEs12(LT, LT)
new_ltEs15(Left(x0), Left(x1), ty_Integer, x2)
new_esEs24(x0, x1, app(ty_Ratio, x2))
new_compare9(x0, x1, ty_Int)
new_lt7(x0, x1)
new_ltEs5(Just(x0), Just(x1), ty_Char)
new_esEs28(x0, x1, ty_Ordering)
new_esEs7(Left(x0), Left(x1), app(app(ty_Either, x2), x3), x4)
new_esEs26(x0, x1, app(app(ty_@2, x2), x3))
new_ltEs18(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1)))
new_esEs10(:(x0, x1), :(x2, x3), x4)
new_esEs32(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs20(x0, x1, app(ty_Maybe, x2))

We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs: